Javascript JS func中的JQuery func执行越来越多
为什么javascript函数中的jQuery函数在每次单击时都会越来越火?点击次数足够多,每次点击执行100多次以上Javascript JS func中的JQuery func执行越来越多,javascript,jquery,Javascript,Jquery,为什么javascript函数中的jQuery函数在每次单击时都会越来越火?点击次数足够多,每次点击执行100多次以上 <div class="clickity" onclick="funky()">Test</div> var x = 0; function funky(){ $('.clickity').on('click', function(){ x += 1; alert(x); }); }; 测试 var
<div class="clickity" onclick="funky()">Test</div>
var x = 0;
function funky(){
$('.clickity').on('click', function(){
x += 1;
alert(x);
});
};
测试
var x=0;
函数funky(){
$('.clickity')。在('click',function()上{
x+=1;
警报(x);
});
};
我只是好奇为什么它是这样工作的。因为每次单击
clickity
,就会调用funky
方法,并在clickity
上注册一个新的事件侦听器。您正在混合两种方法,或者:
var x=0;
函数funky(){
x+=1;
警报(x);
};代码>
Test
我不明白,为什么要在函数中插入侦听器?每次单击“将新侦听器添加到”按钮时。每次单击执行增量并添加一个新的侦听器 在jQuery
中的addEventListener
a.k.a.on
具有累积特性。您不是通过替换旧的处理程序来分配它,而是添加一个新的处理程序并保留以前的处理程序链。您是将类Javascript Onclick HTML属性与jquery相结合
第一轮
用户点击率
a。调用funky是因为HTML属性onclick
funky将侦听器附加到clickety
注意,funky在第一次点击时没有增加x
下一轮
用户点击率
a。调用funky是因为HTML属性onclick
b。x增加1,因为jquery事件侦听器要在第一轮中附加clickety
funky将侦听器附加到clickety
未来回合
用户点击率
a。调用funky是因为HTML属性onclick
b。x增加1,因为jquery事件侦听器要在第一轮中附加clickety
c。x增加1,因为jquery事件侦听器要在第二轮中附加clickety
funky将侦听器附加到clickety
从函数声明语句中删除onclick=“funky()”
并在('click',fn)
上展开$('.clickity')。我正在为onclick=“func(Id)”分配一个Id,并在jquery$('.class'+Id)中使用该Id。为了避免每次单击或将鼠标悬停在某个元素上时都有for循环运行,为了找到一个数字而运行数百次,必须找到更好的解决方案tho:)