2013-01-01 118 views
0

這裏是jsfiddle,exalains的問題,http://jsfiddle.net/4CuqR/爲什麼鏈接.andSelf()不起作用?

複製粘貼相同的小提琴代碼在這裏。

<!DOCTYPE html> 
<html> 
<head> 
    <style type="text/css"> 
    p,div { margin: 0; padding: 0; padding-left: 20px; } 
    </style> 
</head> 
<html> 
<body> 
    <DIV class="main"> 
    <span>Main Class</span> 
    <DIV class="sub1"> 
     <span>sub1 Class</span> 
     <p>Hello P1</p> 
     <p>Hello P2</p> 
    </DIV> 
    </DIV> 
</body> 
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> 
    <script> 
    $(function() { 
     $('.main').children('.sub1').children('p:first').andSelf().andSelf().css("color", "red"); 
    });​ 
    </script> 
</html> 

在上面的代碼中,理想地DIV.main也應該是紅色。

這裏是輸出上面的代碼

enter image description here

回答

1

好吧,讓我來解釋一下......

$('.main').children('.sub1') 
+ $('.main') 
  • 第二.andSelf()然後在加

    呦下面

    $('.main').children('.sub1').children('p:first') 
    

    我們的代碼給你的元素

    <p>Hello P1</p> 
    

    現在,當您添加第一.andSelf(),它給你的元素

    <DIV class="sub1"> 
        <span>sub1 Class</span> 
        <p>Hello P1</p> 
        <p>Hello P2</p> 
    </DIV> 
    

    接下來,當您添加第二個.andSelf() ,它仍然給你相同的元素

    <DIV class="sub1"> 
        <span>sub1 Class</span> 
        <p>Hello P1</p> 
        <p>Hello P2</p> 
    </DIV> 
    

    因此,您的代碼不起作用,並且DIV.main不是紅色。

    所以,只要試試這個:

    $('.main').children('.sub1').andSelf().children('p:first').andSelf().css("color","red"); 
    

    這將選擇DIV.main也並添加CSS。

    這裏下面

    $('.main').children('.sub1').andSelf() 
    

    代碼爲我們提供了以下元素

    <DIV class="main"> 
        <span>Main Class</span> 
        <DIV class="sub1"> 
         <span>sub1 Class</span> 
         <p>Hello P1</p> 
         <p>Hello P2</p> 
        </DIV> 
    </DIV>​ 
    

    接下來,當您添加第二個.andSelf(),它仍然給你相同的元素

    <DIV class="main"> 
        <span>Main Class</span> 
        <DIV class="sub1"> 
         <span>sub1 Class</span> 
         <p>Hello P1</p> 
         <p>Hello P2</p> 
        </DIV> 
    </DIV>​ 
    
  • 3

    左右移動你的.andSelf() S:

    $('.main').children('.sub1').andSelf().children('p:first').andSelf().css("color","red");​ 
    

    演示:http://jsfiddle.net/4CuqR/2/

    這是一個相當複雜的選擇器。

    • 第一.andSelf()選擇:

      $('.main').children('.sub1').andSelf().children('p:first') 
      + $('.main').children('.sub1') 
      + $('.main')