说我有这个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”的类,所以这不应该起作用。
我是否误解了链条是如何工作的?有人可以澄清为什么这有效吗?
答案 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}},在您的情况下,最近评估的evaluated
是object
的结果。如果您要将.find('.li1')
添加到选择器中,则必须在当前上下文中使用#div_box
。