很难弄清楚为什么在第一次点击时调用此警报代码一次,第二次点击时调用两次,第三次点击时调用四次,第四次点击时调用八次等等。
$(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();
});
}
答案 0 :(得分:7)
第一个块创建一个调用newClick
的点击事件,它会创建一个调用自身的点击事件......这会创建另一个事件...我想你明白了。取出函数中的click事件绑定代码。
应该是这样的:
function newClick(){
alert("in new click");
}
答案 1 :(得分:1)
您正在点击事件中绑定点击事件,因此每次点击时,您绑定另一个点击事件,导致大量点击事件多次绑定到同一元素点击。
答案 2 :(得分:0)
您正在做的是每次调用newClick()
时注册附加点击处理程序,而不是替换旧的 - 它不会因为事件被触发而消失。就这样做:
$(document).ready(function() {
$('#preventClickDiv a[href]').click(function(e){
e.preventDefault();
alert('Prevented');
});
});
(另外,阻止用户点击链接是产生仇恨的好方法。)