Jquery点击两次事件

时间:2015-10-20 13:38:06

标签: javascript jquery events

我正在使用Jquery构建一些东西,我正在进行一些Ajax调用。所以在我的ajax调用之后,我需要调用函数来再次跟踪某些元素的点击。这是一个这样的函数的例子:

$(document).ready(function () {
    initSomething();
});
function initSomething(){
    $('.something').click(function(){
        alert('hello');
    });
}

现在是一个ajax功能:

$('#AddSomething').click(function(){
    $.post('somewhere.php',{data},function(data){
        initSomething();
    });
});

问题是:我觉得我在initSomething();这是第二次,就像它正在读取已经由文档就绪调用的第一个initSomething跟踪的元素上的click事件。

所以我尝试了类似e.preventDefault和e.preventPropagation()的东西,但它似乎不起作用,我错过了什么?

感谢您的回答并度过愉快的一天!

编辑:正如在答案中看到的那样,我忘了说Ajax调用是在DOM中插入新的.something元素......

编辑2:这里有一个jsfiddle:https://jsfiddle.net/wpsnz7op/

3 个答案:

答案 0 :(得分:0)

尝试.off() api删除已经附加的事件并重新分配事件,如下所示。

function initSomething(){
    $('.something').off('click').click(function(){
        alert('hello');
    });
}

希望这会有所帮助......

答案 1 :(得分:-1)

没有必要重新点击我所看到的代码中的点击次数。

不要重新绑定,也不会出现多次点击问题。

答案 2 :(得分:-1)

使用事件委托代替。

 $(document).on('click','.something',function(){
        alert('hello');
    });

然后在ajax之后不需要调用initSomething();函数。