$(“li”,“li.item-ii”)会做什么?

时间:2014-06-29 18:57:13

标签: jquery jquery-selectors

这可能是一个noob问题购买Will $(" li"," li.item-ii")选择所有li和li.item-ii里面''''或者只选择li.item-ii后代的li?

    <body>
       <ul class="level-1">
       <li class="item-i">I&lt; /li&gt;</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>

5 个答案:

答案 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)。

所以这就是全部。希望这对你有所帮助!干杯!