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