我想采用一个简单的FontAwesome图标:
<div class="emotion">
<i class="fa fa-smile-o"></i>
</div>
并根据当前类的内容交换类:
$(".emotion .fa-smile-o").click(function (){
$(this).removeClass('fa-smile-o').addClass("fa-meh-o");
});
$(".emotion .fa-meh-o").click(function (){
$(this).removeClass('fa-meh-o').addClass("fa-frown-o");
});
$(".emotion .fa-frown-o").click(function (){
$(this).removeClass('fa-frown-o').addClass("fa-smile-o");
});
但目前这只适用于第一次改变。我做错了什么?
答案 0 :(得分:2)
使用event delegation,因为当您在页面上添加点击事件时,没有包含类.fa-frown-o
和.fa-meh-o
的元素
$(".emotion").on('click', '.fa-smile-o', function (){
$(this).removeClass('fa-smile-o').addClass("fa-frown-o");
});
$(".emotion").on('click', '.fa-meh-o', function (){
$(this).removeClass('fa-meh-o').addClass("fa-frown-o");
});
$(".emotion").on('click', '.fa-frown-o', function (){
$(this).removeClass('fa-frown-o').addClass("fa-smile-o");
});
答案 1 :(得分:1)
所以要照顾它,你应该这样做:
$(".emotion .fa").click(function (){
if($(this).hasClass('fa-smile-o')) {
$(this).removeClass('fa-smile-o').addClass("fa-frown-o");
return;
}
if($(this).hasClass('fa-meh-o')) {
$(this).removeClass('fa-meh-o').addClass("fa-frown-o");
return;
}
if($(this).hasClass('fa-frown-o')) {
$(this).removeClass('fa-frown-o').addClass("fa-smile-o");
return;
}
});