我有这个HTML:
<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>
当我点击大字体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
元素的替代方法。我只想了解为什么我使用的选择器不起作用......
答案 0 :(得分:4)
您需要排除document.body
本身。像
$("body *").not("#switcher").addClass("large");
这将查询body
的所有子项,不包括#switcher
。也许更方便:
$(document.body).contents().not('#switcher').addClass('large');
答案 1 :(得分:1)
$("body").children().not("#switcher").addClass("large");