jQuery contains() - 只选择底部div

时间:2012-09-26 10:48:13

标签: jquery contains

好的,所以我正在尝试使用contains()选择器来修改div的css。请看小提琴:http://jsfiddle.net/6mdqf/

如您所见,该函数选择父div,即使它不直接包含文本“John”;该文本保存在子div中。 如果删除父div,则所有内容都可以正常工作。

如何确保只选择包含“John”文本的子div,而父div和其他孩子一个人留下?

希望我的问题有道理......

代码:

<div>
    <div>John Resig</div>
    <div>George Martin</div>
    <div>Malcom John Sinclair</div>
    <div>J. Ohn</div>
</div>

和js

$("div:contains('John')").css("text-decoration", "underline");

4 个答案:

答案 0 :(得分:3)

由于父div具有包含该特定文本的子项,因此您的选择器选择父div及其子项,请尝试以下操作。

$("div:not(:has(*)):contains('John')").css("text-decoration", "underline");

http://jsfiddle.net/rwQ3u/

答案 1 :(得分:2)

另一种方法是调用div中的children元素,并使用contains()作为子项中的选择器。

$("div").children(":contains('John')").css("text-decoration", "underline");​

JSFiddle

答案 2 :(得分:0)

因为你首先有一个div而且它在里面搜索并在div中找到John并选择all,试试这个:

<div>
    <div class="search">John Resig</div>

    <div class="search">George Martin</div>
    <div class="search">Malcom John Sinclair</div>
    <div class="search">J. Ohn</div>
</div>
​$(document).ready(function(){
    $("div .search:contains('John')").css("text-decoration", "underline");
});

答案 3 :(得分:0)

$("div>:contains('John')").css("text-decoration", "underline");

编辑jsFiddle:http://jsfiddle.net/6mdqf/1/