3

我有这个 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>

当我单击 Large print 时,我想为除我的第一个div(它具有调用的切换器)之外的所有正文元素添加一个类。idbutton

我努力了

 $(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

2 回答 2

4

您需要排除document.body自身。喜欢

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

这将查询 的所有孩子body,不包括#switcher。也许更方便:

$(document.body).contents().not('#switcher').addClass('large');
于 2012-07-25T09:55:31.990 回答
1
$("body").children().not("#switcher").addClass("large");
于 2012-07-25T09:56:58.793 回答