我想在类似按钮上添加点击事件。单击时,我想添加一个名为active的类。当元素具有此类时,我不希望触发click事件。
为什么这个日志“被点击了!”每一次而不仅仅是第一次?
<div class="vote">
<a class="vUp">Like me</a>
</div>
$(".rate .vUp").not(".active").click(function(){
console.log("click!");
$(this).addClass("active");
return false;
});
答案 0 :(得分:1)
您可以使用.off()
$(".rate .vUp").click(function(){
console.log("click!");
$(this).addClass("active");
//Unbind event
$(this).off("click");
return false;
});
答案 1 :(得分:1)
那是因为,你的DOM在运行时会发生变化,但你的JS却没有。你需要一个实时方法,或者更好,删除按钮上的点击处理程序,如下所示:
$(".rate .vUp").click(function(event){
console.log("click!");
$(this).addClass("active");
$(event.currentTarget).unbind("click");
event.preventDefault();
return false;
});
答案 2 :(得分:1)
尝试使用以下代码:
$(".rate .vUp").click(function(){
if($(this).hasClass("active")){
return false;
}else{
console.log("click!");
$(this).addClass("active");
}
});
答案 3 :(得分:0)
您也可以使用hasClass()方法获取一个工作示例:
$(".rate .vUp").click(function(){
if (!$(this).hasClass("active")) {
console.log("click!");
$(this).addClass("active");
event.preventDefault();
return false;
}
});