javascript - 不确定为什么这个 jQuery 点击事件在这里被触发

标签 javascript jquery

我创建了这个片段http://jsfiddle.net/PexkV/

<script>
var arc={};

arc.handler={
  background_color:'#8DBC8F',
  console_this: function(str){
    alert('lets write this to the console ' + str + ' ' + this.background_color);
  }

}

$(document).ready(function(){
  $('.more-click-me').on('click', arc.handler.console_this('here'));
  $('.more-click-me').on('click', function(){
    arc.handler.console_this('blue');
  });

});
</script>
<div class='more-click-me'>lets write this</div>

并且不确定为什么会自动调用第一个事件(示例中的“此处”)。看起来它应该只在响应点击时调用?我没有得到什么?如果我犯了一些非常愚蠢的语法问题,请提前抱歉。

提前致谢

最佳答案

因为您正在调用该函数并将其返回值传递给 .on()。实现您想要实现的目标的最简单方法是将匿名函数传递给 .on(),就像在第二个示例中所做的那样,然后调用您的 console_this 其内部功能:

$('.more-click-me').on('click', function () {
    arc.handler.console_this('here');
});

这是一个updated fiddle .

关于javascript - 不确定为什么这个 jQuery 点击事件在这里被触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13176872/

相关文章:

jquery - 只接受整数的数字输入类型?

javascript - 突出显示引用的文本

jQuery Mobile - 垂直显示 filp 切换开关

javascript - 为什么 jQuery 对损坏的标记的解释与浏览器不同?

javascript - 我的 PHP 代码没有将值插入数据库

jquery - 尝试编写一个简单的轮播

javascript - jQuery 延迟 : "then" . .. "when"... "join"或 "blockUntilDone"在哪里?

JavaScript 在模糊时将默认值填充回文本字段

javascript - 将字符串换行超过 2 行 - SVG

javascript - 如何在 jQuery 选项卡小部件中更改 <li> 的类属性