链条混乱

时间:2014-01-15 06:32:43

标签: jquery chaining

说我有这个HTML:

<div id="div_box">
    <ul>
        <li class="li1"></li>
        <li class="li2"></li>
        <li class="li3"></li>
    </ul>
</div>

我想删除“li1”类。

我用jQuery尝试过这个:

$("#div_box").find(".li1").removeClass("li1");

它有效,但我不明白为什么它有效。在链接中,该方法仅适用于给定的选择器。但是#div_box没有名为“li1”的类,所以这不应该起作用。

我是否误解了链条是如何工作的?有人可以澄清为什么这有效吗?

3 个答案:

答案 0 :(得分:0)

文档中详细解释了...... http://api.jquery.com/find/

  

.find()方法允许我们搜索后代   DOM树中的这些元素并从中构造一个新的jQuery对象   匹配元素。

     

.find()方法的第一个签名接受选择器   我们可以传递给$()函数的相同类型的表达式。该   将通过测试元素是否与此选择器匹配来过滤元素。

关注遍历元素

  

与其他树遍历方法不同,选择器   在调用.find()时需要表达式。如果我们需要检索   所有的后代元素,我们都可以传入通用选择器   '*'来实现这一目标。

答案 1 :(得分:0)

.find()方法返回#div_box的所有后代li1 ...

并非所有jQuery方法都返回调用它的同一组对象...大多数tree traversal方法返回一组不同的对象

答案 2 :(得分:0)

Chaining将指向最近为object的{​​{1}},在您的情况下,最近评估的evaluatedobject的结果。如果您要将.find('.li1')添加到选择器中,则必须在当前上下文中使用#div_box