jQuery选择器令人困惑

前端之家收集整理的这篇文章主要介绍了jQuery选择器令人困惑前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我很感激,如果有人也指出我的理论来源,那么我可以更好地把握它.

假设我有以下HTML

<ul>
  <li>1</li>
</ul>

<ul>
  <li>2</li>
</ul>

这个JavaScript代码

alert($("ul li:eq(0)").length);

alert($("ul").find("li:eq(0)").length);

alert($("ul").find("li").eq(0).length);

我得到1,2,1作为输出.我能理解为什么我在最后一个案例中得到1,但为什么JavaScript代码的第1行和第2行给出了不同的输出.

小提琴:
https://jsfiddle.net/ishansoni22/pntz6kfx/

解决方法

eq是一个奇怪的jQuery选择器,与大多数选择器的基于CSS的逻辑并不完全一致(在此 documentation提取中强调我的):

The index-related selectors (:eq(),:lt(),:gt(),:even,:odd) filter the set of elements that have matched the expressions that precede them

简而言之,第一种情况中的eq(0)适用于整个ul li.

$(“anything:eq(0)”)最多只能返回一个元素.

而在第二种情况下,“li:eq(0)”选择器通过find应用于$(“ul”)的所有匹配.

原文链接:https://www.f2er.com/jquery/178481.html

猜你在找的jQuery相关文章