我目前有一个我在网站上使用的脚本。脚本的目标是当用户单击链接时,将触发javascript函数。此功能基于div id。在函数结束时,我使用jquery来改变所说的div id。但是,当用户再次单击该链接时,即使id已更改,该功能仍会触发。我究竟做错了什么?如何让脚本仅在第一次单击链接时执行?
$("#down").click(function(){
var id = $("#down").attr("class");
$.ajax({
type: "POST",
url: "vote.php",
data: "side=down&id=" + id,
success: function(){ alert("lul worked"); }
});
$('.' + id + '#down').attr('id', 'down_stay');
});
既然你们已经回答了,那么使用“一个”或使用“unbind”会有什么更好的选择呢?
答案 0 :(得分:4)
请勿使用click
,请使用on
。或者在您的情况下,one
:
$('#down').one('click', function() {
// function only fires once and then is unbound.
});
答案 1 :(得分:1)
使用$("#down").one("click", function(){});
代替只启动一次。
答案 2 :(得分:1)
尝试使用one
$("#down").one('click', function(){
DOM事件附加到元素而不是属性。
因此即使你改变元素的属性,也不意味着它是一个不同的元素。
只有在从DOM中删除该特定元素时才会删除该事件。
答案 3 :(得分:1)