1

很难弄清楚为什么这个警报代码在第一次点击时被调用一次,在第二次点击时被调用两次,在第三次点击时被调用四次,在第四次点击时被调用八次,等等......

$(document).ready(function() {
    $('#preventClickDiv a[href]').click(function(e){ 
        e.preventDefault();
        alert('Prevented');
        newClick();
    });
});
function newClick(){
    $('#preventClickDiv a[href]').click(function(e){ 
        e.preventDefault();
        alert('Prevented');
        newClick();
    });
}
4

3 回答 3

7

第一个块创建一个调用的单击事件,newClick该事件创建一个调用自身的单击事件......创建另一个事件......我想你明白了。取出函数中的点击事件绑定代码。

它应该是这样的:

function newClick(){
    alert("in new click");
}
于 2012-06-28T18:42:09.500 回答
1

您在单击事件中绑定了单击事件,因此每次单击时,都会绑定另一个单击事件,从而导致每次单击时都会将大量单击事件多次绑定到相同的元素。

于 2012-06-28T18:43:44.533 回答
0

你所做的是每次调用时注册一个额外newClick()的点击处理程序,而不是替换旧的——它不会因为事件被触发而消失。只需这样做:

$(document).ready(function() {
    $('#preventClickDiv a[href]').click(function(e){ 
        e.preventDefault();
        alert('Prevented');
    });
});

(此外,阻止用户点击链接是产生仇恨的好方法。)

于 2012-06-28T18:44:08.733 回答