在jquery中更新div id,因此脚本只能运行一次

时间:2013-06-07 20:02:38

标签: javascript jquery

我目前有一个我在网站上使用的脚本。脚本的目标是当用户单击链接时,将触发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”会有什么更好的选择呢?

4 个答案:

答案 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)

改为使用unbind()

替换

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

$( this ).unbind( 'click' );