Jquery 非选择器难度

标签 jquery html css jquery-selectors

编辑:好吧,为了弄清楚这一点,您使用 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;
}

关于Jquery 非选择器难度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10854829/

相关文章:

javascript - 如果网站小部件已关闭,则加载替代脚本

javascript - 使用动态变量从 tr 访问子 td

javascript - :NOT selector in css is not working in my case

html - css 文本在列表中居中对齐

javascript - 在每次迭代中使用 Jquery 更改新创建的 DIv 的样式

jquery - 根据分辨率交换占位符文本(媒体查询)

javascript - 使用jquery隐藏模态框

javascript - 在单页网站上替换 Div 的内容

PHP - 使用下拉列表更改站点主题

javascript - 我的 jQuery 表格自动过滤器不断更改表格行高。为什么?