编辑:好吧,为了弄清楚这一点,您使用了not选择器来过滤特定标签中的属性,而不是过滤子元素吗?

有人可以帮我解决我是否在这里遇到某种语法错误,还是我不了解这个概念?

我有一些列表项,当您单击它们时,它们会更改正文的字体大小。现在列表项在正文中,因此其字体更改为。我希望这个UL保持相同的字体。所以我正在使用.not(“#ulSize”),如下所示。但这是行不通的。

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.7.2.js"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            $("#liSmall").click(function () {
                $('body').not('#ulSize').removeClass('large normal').addClass('small');
            });
            $("#liNormal").click(function () {
                $('body').not('#ulSize').removeClass('large small').addClass('normal');
            });
            $("#liLarge").click(function () {
                $('body').not('#ulSize').removeClass('small normal').addClass('large');
            });
        });
    </script>
    <style type="text/css">
        .large
        {
            font-size: large;
        }

        .normal
        {
            font-size: medium;
        }

        .small
        {
            font-size: small;
        }
    </style>
</head>
<body>
    <ul id="ulSize">
        <li id="liSmall">Small Font</li>
        <li id="liNormal">Normal Font</li>
        <li id="liLarge">Large Font</li>
    </ul>
        Text in here!!!
</body>
</html>


感谢大伙们

最佳答案

我建议将您的JS重构为如下形式:

$(function(){
  $('#liSmall, #liNormal, #liLarge').on('click', function(e){
    $('body').removeClass('small medium large');
    switch(this.id){
      case 'liSmall': $('body').addClass('small'); break;
      case 'liMedium': $('body').addClass('medium'); break;
      case 'liLarge': $('body').addClass('large'); break;
    }
  });
});


然后在#ulSize列表上硬编码字体大小,然后让浏览器完成其余工作。

#ulSize {
    font-size: 16px !important;
}

07-24 20:14