Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.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 不确定为什么在此处触发此jQuery单击事件_Javascript_Jquery - Fatal编程技术网

Javascript 不确定为什么在此处触发此jQuery单击事件

Javascript 不确定为什么在此处触发此jQuery单击事件,javascript,jquery,Javascript,Jquery,我已经创建了这个片段 我不确定为什么第一个事件会被自动称为示例中的“here”。似乎应该只在单击时调用它?我没有得到什么?如果我犯了一些非常愚蠢的语法错误,请提前道歉 提前thx,因为您正在调用该函数 arc.handler.console_this('here') 这不是分配函数。它应该看起来像第二个 $('.more-click-me').on('click', arc.handler.console_this('here')); <-- wrong $('.more-click-

我已经创建了这个片段

我不确定为什么第一个事件会被自动称为示例中的“here”。似乎应该只在单击时调用它?我没有得到什么?如果我犯了一些非常愚蠢的语法错误,请提前道歉


提前thx

,因为您正在调用该函数

arc.handler.console_this('here')
这不是分配函数。它应该看起来像第二个

$('.more-click-me').on('click', arc.handler.console_this('here'));  <-- wrong
$('.more-click-me').on('click', function(){  <-- right, uses a closure
    arc.handler.console_this('blue');
});

因为您正在调用函数并将其返回值传递给.on。要实现您试图实现的目标,最简单的方法是将一个匿名函数传递给.on,就像您在第二个示例中所做的那样,并调用控制台中的此函数:

$('.more-click-me').on('click', function () {
    arc.handler.console_this('here');
});
这是一个例子

在第一行中,您正在调用该方法&尝试将结果绑定到事件


第二行足以设置事件绑定。

js解释器跳入a回调并运行代码似乎太违反直觉了。可以安全地说,像这样的所有回调都应该封装在匿名函数中吗?抱歉,我不是全职的JS开发人员,并且采用了一些代码。如果您想一想,当您绑定事件处理程序时,您将引用作为回调传递给函数。第三个参数将始终进行求值,它返回的任何内容都将作为回调传递,因此您需要传递对函数的引用,因为这将用于在适当的时间执行函数。通过调用函数,您传递的是返回值,而不是引用。希望有帮助!
$('.more-click-me').on('click', function(){ arc.handler.console_this('here'); });  
$('.more-click-me').on('click', function(){ arc.handler.console_this('blue'); });
$('.more-click-me').on('click', function () {
    arc.handler.console_this('here');
});
$('.more-click-me').on('click', arc.handler.console_this('here'));
$('.more-click-me').on('click', function(){
    arc.handler.console_this('blue');   });