Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS func中的JQuery func执行越来越多_Javascript_Jquery - Fatal编程技术网

Javascript JS func中的JQuery func执行越来越多

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

为什么javascript函数中的jQuery函数在每次单击时都会越来越火?点击次数足够多,每次点击执行100多次以上

<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:)