请教一下jQuery中的:contains(text)

<body>
    <div>
        我
    </div>
<script>
    $(function(){
        $(':contains(你)').css('background','lime');
    });
</script>    
</body>

:contains 选择器选取包含指定字符串的元素。(W3school)

我想选择包含“你”这个字符串的元素,显然页面中没有符合条件的,但是页面也变成了绿色。 下面两个也可以使页面变成绿色(瞎试的) $(':even').css('background','lime'); $(':odd').css('background','lime'); 请问这是为什么呢?谢谢。

阅读 3.2k
1 个回答

1.:contains('你')页画为什么会变成绿色?

因为你的script标签在html画面上,jquery在查找元素时会整个画面上查找。然后找到script里面有个'你',就是你写的那段javascript代码,程序把它当作text来处理了暂时:

 $(function(){
        $(':contains(你)').css('background','lime');
 });

所以:contains(你)应该会找到三个元素:html,body,以及这个script三个元素,将这三个元素样式加上background,当然script不支持加了也没用。

2.$(':even').css('background','lime'); $(':odd').css('background','lime'); 画面为什么会变成绿色?

$(':even')会选中html,$(':odd')会选中body,设置这两个元素的background当然会有作用了。

另外一点补充:关于第一点,如果你把你的js代码写在一个js文件中然后通过script标签引入就不会出现这样的问题了。如果是注释里面出现了你要查找的文字也会被忽略。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题