这可能是一个noob问题购买Will $(" li"," li.item-ii")选择所有li和li.item-ii里面''''或者只选择li.item-ii后代的li?
<body>
<ul class="level-1">
<li class="item-i">I< /li></li>
<li class="item-ii">II
<ul class="level-2">
<li class="item-a">A</li>
<li class="item-b">B
<ul class="level-3">
<li class="item-1">1</li>
<li class="item-2">2</li>
<li class="item-3">3</li>
</ul>
</li>
<li class="item-c">C</li>
</ul>
</li>
<li class="item-iii">III</li>
</ul>
</body>
答案 0 :(得分:1)
首先,您可以消除每个LI中的类名,因为您可以引用UL元素的直接LI子元素。例如:
var $cLi1 = $("ul.level-1 > li") //returns collection of the UL element's immediate LI children
您甚至不需要在第二级UL和LI元素上使用类名,因为您可以使用CSS语法来引用它们。例如:
//2nd level
var $cLi2 = $("ul.level-1 > li > ul > li") //returns collection of LI elements in 2nd level UL elements
//3rd level
var $cLi3 = $("ul.level-1 > li > ul > li > ul > li")
//if you want to find elements within a jQuery object, both of these work the same:
var $ul1 = $("ul.level-1");
var $cLi1 = $ul1.find("> li")
//or
var $cLi1 = $("> li", $ul1);
有关jQuery选择器的全面参考,请访问:http://api.jquery.com/category/selectors/
答案 1 :(得分:0)
第二个参数称为上下文。它是一样的
$('li.item-ii').find('li')
答案 2 :(得分:0)
是的,你是对的,这称为范围搜索$( "li", "li.item-ii" )
;
这意味着它会找到li.item-ii
内的所有li标签。
如果您的网页中有太多html,那么这将有助于提高效果。
另一种方法:
$("li.item-ii").find("li")
。
此mehtod也提供与$( "li", "li.item-ii" )
答案 3 :(得分:0)
它只返回li下所有的li = class =“item-ii”
如果你想访问所有的li,你应该尝试: -
$( "li" );
答案 4 :(得分:0)
$( "li", "li.item-ii" )
- 这个jQuery选择器指向两个不同的元素。
$("li")
- 选择所提供的html中的所有li
。$("li.item-ii")
- 选择所有第二个li
及其子元素。现在如果这些被一起使用,那么$("li", "li.item-ii")
选择器将在提供的html中选择所有li
(s)。
所以这就是全部。希望这对你有所帮助!干杯!