更改两个class i元素中的类名
Change class name in two class i element
我需要在<i>
元素中单击更改类,该元素有2个类。第一类总是"fa",第二类是"fa minus"或"fa plus"。我需要将第二个类从"minus"更改为"plus",从"plus"更改为"minus",这取决于它已经有了哪个类。你介意帮我一下吗?现在根本不起作用
<a href="#!"><div class="menuSlide">Products <i class="fa fa-minus"></i></div></a>
<a href="#!"><div class="menuSlide"> Multimedia <i class="fa fa-plus"></i></div></a><br /><br />
<script>
$(".menuSlide").click(function(){
if($(this).next(".fa").attr("class") == "fa-minus"){
$(this).next(".fa").removeClass("fa-minus");
$(this).next(".fa").addClass("fa-plus");
}
else{
$(this).next(".fa").removeClass("fa-plus");
$(this).next(".fa").addClass("fa-minus");
}
});
</script>
.fa
不是.menuSlide
的同级元素,而是其子元素,因此.next()不正确。您可以使用.find()和.hasClass()代替:
$(".menuSlide").click(function() {
if ($(this).find(".fa").hasClass("fa-minus")) {
$(this).find(".fa").removeClass("fa-minus");
$(this).find(".fa").addClass("fa-plus");
} else {
$(this).find(".fa").removeClass("fa-plus");
$(this).find(".fa").addClass("fa-minus");
}
});
.fa-minus:before {
content: "-";
}
.fa-plus:before {
content: "+";
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a href="#!">
<div class="menuSlide">Products <i class="fa fa-minus"></i>
</div>
</a>
<a href="#!">
<div class="menuSlide">Multimedia <i class="fa fa-plus"></i>
</div>
</a>
<br />
<br />
这是一个非常基本的用例。您应该检查jQuery hasClass,而不是在属性"class"
上使用比较器,因为后者实际上是一个字符串,包含由空白分隔的所有应用类。
首先,您甚至可以使用jQuerytoggleClass,而不必尝试实现检测,然后实现类的移除和插入。
所以你最终得到了代码:
$(".menuSlide").click(function(){
$(".fa", this).toggleClass("fa-minus fa-plus");
});
如果使用next()
,它将返回所选元素的下一个同级元素。同级元素是共享同一父的元素
您需要使用find()
,它返回所选元素的子元素。后代是孩子、孙子、曾孙等等
$(".menuSlide").click(function(){
if($(this).find(".fa").attr("class") == "fa fa-minus"){
$(this).find(".fa").removeClass("fa-minus");
$(this).find(".fa").addClass("fa-plus");
}
else{
$(this).find(".fa").removeClass("fa-plus");
$(this).find(".fa").addClass("fa-minus");
}
});
这里是小提琴
相关文章:
- 通过id和class属性获取元素
- $(.class).empty总是缺少一个元素
- 将鼠标悬停在Angular JS中的一个元素上,并将Class添加到另一个元素中
- jQuery:具有class但不具有$(this)的元素
- 在所选元素的父元素上添加“ng-class”
- 使用类而不是 ID(通过 CLASS 而不是 ID 获取元素)
- “class”属性的值隐式扩展某些标记元素
- 元素必须单击两次才能添加Class(自定义指令)
- 将class属性设置为元素不适用于javascript和jquery
- 如何在AngularJS中使用ng-class仅在特定页面上向元素添加类
- 用于将 Class 添加到链接中指定的元素的动态代码
- Jquery 如何在不作为父级的情况下选择低于 id/class 的元素
- jQuery从许多具有相同.class的元素中更改单击元素的CSS背景
- 使用两个父级滚动到元素,一个具有id,另一个具有class
- 我创建了一个CSS切换器,但我只需要更改class=“”的元素;红色”;身体
- 如何在AngularJS上添加不同元素的Class和removeClass
- 如何选择具有class属性的元素(使用jQuery),该属性的值正好以给定字符串开头
- Javascript-不带ID或Class的get元素(按钮)
- 查找类为'的元素;x',忽略那些有class的'x'和另一类
- 当元素'class属性发生变化时是否会触发事件?