0

我目前有一个在我的网站中使用的脚本。该脚本的目标是当用户点击链接时,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');
        });

既然大家都已经回答了,那么使用“one”还是使用“unbind”哪个更好呢?

4

4 回答 4

4

不使用click,使用on。或者在你的情况下,one

$('#down').one('click', function() {
    // function only fires once and then is unbound.
});
于 2013-06-07T20:05:02.697 回答
1

改为$("#down").one("click", function(){});使其仅触发一次。

于 2013-06-07T20:04:52.033 回答
1

尝试使用one

$("#down").one('click', function(){

DOM 事件附加到元素而不是属性。

因此,即使您更改元素的属性,也不意味着它是不同的元素。

只有从 DOM 中删除该特定元素时,该事件才会被删除。

于 2013-06-07T20:05:04.593 回答
1

改为使用unbind()

代替

$('.' + id + '#down').attr('id', 'down_stay');

$( this ).unbind( 'click' );
于 2013-06-07T20:05:10.190 回答