为什么在jQuery中自动触发此点击事件
Why is this click event automatically triggered in jQuery?
我正在使用 JS/jQuery 创建一个简单的应用程序作为学习练习,遇到了我以前遇到过但似乎无法解决的问题。为什么在下面的代码中,第二次点击事件是自动触发的,而不是在我单击 $('.tweet li a.username')时触发的?
$(function(){
setInterval(update, 3000);
$('.showMore').on('click', function() {
moreIndex += 5;
update();
})
$('.tweet li a.username').on('click', alert('hey!'));
});
alert('hey!')是我仍在努力的函数的填充物。应该如何组织,以便在单击链接时而不是在页面加载时触发单击事件?$('.showMore') 事件工作正常,即使我更改了顺序。
这是因为您在那里调用警报函数而不是传递回调函数引用。
在您的情况下,您正在调用 alert()
函数并将alert
返回的值作为 click 事件处理程序传递。
$('.tweet li a.username').on('click', function(){
alert('hey!')
});
您需要将警报包装在回调函数中,就像第一个示例一样:
$('.tweet li a.username').on('click', function() { alert('hey!') });
.on
方法期望 JavaScript 对象处于该位置,特别是函数,它可以稍后执行。在你的原始代码中发生的事情是,JavaScript引擎正在寻找一个函数,但在那里看到一些其他代码 - 所以它在那里执行代码(激活警报),希望返回一个有用的对象。(当没有任何返回时,JavaScript 引擎会假设您希望在点击事件上执行null
,并且很高兴地这样做。
相关文章:
- 选择onclick事件jquery
- 用于多个类事件Jquery的单个函数
- 激发滑块's幻灯片事件jquery ui
- 设置重复按钮以注册点击事件jquery
- 保留当前点击事件jquery
- 启动/停止按键事件jquery
- 在事件jquery中插入一个函数
- 删除克隆的事件JQuery
- typeahead选择事件(jQuery)的动态绑定
- 触发自定义事件 Jquery
- 绑定两次或更多次的事件 jquery
- 单击时的事件 jquery 不起作用
- 在鼠标悬停事件 jquery 上显示边框的内容
- 同时触发两个鼠标事件 jQuery
- 焦点事件 jquery 组合框/自动完成
- 如何在页面中捕获“正文”和“正文”事件[Jquery].
- 将对象传递给事件 jQuery
- 验证“取消”上的字段 单击Onbeforeunload事件JQUERY
- 复选框单击事件 jQuery 不起作用
- 口述事件jquery顺序