![](/img/trans.png)
[英]How can I set the class for an element using jQuery? Don't want to add/remove classes
[英]how do i dynamically add or remove classes attached to an element using jquery?
我正在尝试使用jQuery在我的网页中动态添加和删除类。 这是代码-
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title></title>
<meta name="" content="">
<script type="text/javascript" src="jquery.js"></script>
<style type="text/css">
.sub-inactive{display:none;}
.sub-active{display:!important;}
</style>
<script type="text/javascript">
$(document).ready(function(){
$('.sub').parent().hover(
function(){ $('.sub').removeClass('sub-inactive').addClass('sub-active'); },
function(){ $('.sub').removeClass('sub-active').addClass('sub-inactive'); },
);
});
</script>
</head>
<body>
<div id="container">
<ul class="main">
<li>link1</li>
<li>link2</li>
<li>link3
<ul class="sub sub-inactive">
<li>link 3a</li>
<li>link 3a</li>
<li>link 3a</li>
<li>link 3a</li>
</ul>
</li>
<li>link4</li>
<li>link5</li>
</ul>
</div>
</body>
</html>
基本上,有多个类附加到一个元素(在这种情况下,是子活动的,子活动的)。 并且基于页面中发生的某些事件,我想动态更改元素的类状态。 即,例如,如果对于某个元素,当前存在的类是class =“ sub sub-active”,我想使用jquery更改为class =“ sub sub-INACTIVE” ....
请让我知道如何从元素添加/删除特定的类。 下面给出的两行代码(来自上面的示例)似乎不起作用-
function(){ $('.sub').removeClass('sub-inactive').addClass('sub-active'); },
function(){ $('.sub').removeClass('sub-active').addClass('sub-inactive'); }
谢谢!
使用toggleClass()
添加一个类(如果尚不存在),或将其删除(如果存在)。 因为逻辑是相同的,所以您只需将一个函数传递给hover
。
$(document).ready(function(){
var sub = $('.sub');
sub.parent().hover(function(){
sub.toggleClass('sub-inactive sub-active');
});
});
docs 在这里 。
希望有帮助! 干杯。
一个简单的变化
$(document).ready(function(){
$('.sub').parent().hover(
function(){ $('.sub', this).removeClass('sub-inactive').addClass('sub-active'); },
function(){ $('.sub', this).removeClass('sub-active').addClass('sub-inactive'); },
);
});
当您使用toggleClass()
,事情变得更加简单:
$(document).ready(function(){
$('.sub').parent().hover(function() {
$('.sub', this).toggleClass('sub-inactive sub-active');
});
});
无论如何,为非活动状态添加额外的类没有太大意义。 只需将.sub
设置为非活动(默认)外观样式,然后将.sub-active
切换为.sub-active
外观即可。
那是少一类的人,元素永远不能意外地同时具有两个状态。
我想我自己的代码(在问题中)虽然效率不高,但实际上有效。 问题是悬停事件中mouseleave函数的末尾有一个逗号-
function(){ $('.sub').removeClass('sub-inactive').addClass('sub-active'); },
function(){ $('.sub').removeClass('sub-active').addClass('sub-inactive'); },
上面第二行代码结尾的逗号引起了JS错误,而我一直以为问题出在我使用removeClass和addClass的方式上。
感谢您对大家的帮助,我从以上两个回答中学到了一些。
我认为基本上您正在寻找的是这样的东西...
<script type="text/javascript">
$(document).ready(function(){
$('.sub').parent().hover(function(){
$(this).find('ul.sub').removeClass('sub-inactive').addClass('sub-active');
});
$('.sub').parent().mouseout(function(){
$(this).find('ul.sub').removeClass('sub-active').addClass('sub-inactive');
});
});
另外,您可能要检查CSS。 我认为设置显示不重要! 实际上会做任何事情。 实际上,使用上面的示例,您甚至不需要子活动类,因为该子非活动类已从元素中剥离,因此撤销了“ display:none;”。 声明。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.