2012-07-25 55 views
3

所有body元素有這樣的HTML:我如何選擇,除了第一個div

<body> 
    <div id="switcher" class="switcher"> 
     <h3>Style Switcher</h3> 
     <button id="switcher-default"> 
       Default 
     </button> 
     <button id="switcher-narrow"> 
      Narrow Column 
     </button> 
     <button id="switcher-large"> 
      Large Print 
     </button> 
    </div> 
    <p>asdfasdfasdfas dsadf</p> 
    <p>asd'lfkasdf</p> 

    <script src="jquery.js"></script> 
    <script src="test.js"></script> 
</body> 

我想一個類添加到所有body元素,除了我的第一div(具有id稱爲切換),當我點擊在大字體button上。

我已經試過

$(document).ready(function(){ 
    $("#switcher-large").bind("click", function(){  
    $("body:not(:first-child)").addClass("large");  
    }); 
}); 

$(document).ready(function(){ 
    $("#switcher-large").bind("click", function(){  
    $("body:not(div)").addClass("large");  
    }); 
}); 

$(document).ready(function(){ 
     $("#switcher-large").bind("click", function(){  
     $("body").not("#switcher").addClass("large");  
     }); 
    }); 

但沒有似乎工作(類適用於所有元素)。

我不想找到像只選擇p元素的替代方法。我只是想了解爲什麼我使用的選擇器不工作...

回答

4

您需要排除document.body本身。像

$("body *").not("#switcher").addClass("large"); 

這將查詢的body所有兒童,不包括#switcher。也許更方便易:

$(document.body).contents().not('#switcher').addClass('large'); 
+0

感謝您的解釋。它使用內容方法工作。 – caisah 2012-07-25 10:56:31

1
$("body").children().not("#switcher").addClass("large");