Javascript 为什么在jQuery中会自动触发此单击事件?

Javascript 为什么在jQuery中会自动触发此单击事件?,javascript,jquery,Javascript,Jquery,我正在使用JS/jQuery创建一个简单的应用程序,作为一个学习练习,我遇到了一个以前遇到的问题,似乎无法解决。为什么在下面的代码中,第二次单击事件是自动触发的,而不是在我单击$('.tweet li a.username')时触发的 alert('hey!')是我正在编写的函数的填充词。这应该如何组织,以便在单击链接时而不是页面加载时触发单击事件?$('.showMore')事件可以正常工作,即使我更改了顺序 您需要将警报包装在回调函数中,就像第一个示例: $('.tweet li a.use

我正在使用JS/jQuery创建一个简单的应用程序,作为一个学习练习,我遇到了一个以前遇到的问题,似乎无法解决。为什么在下面的代码中,第二次单击事件是自动触发的,而不是在我单击$('.tweet li a.username')时触发的


alert('hey!')是我正在编写的函数的填充词。这应该如何组织,以便在单击链接时而不是页面加载时触发单击事件?$('.showMore')事件可以正常工作,即使我更改了顺序

您需要将警报包装在回调函数中,就像第一个示例:

$('.tweet li a.username').on('click', function() { alert('hey!') });

.on
方法期望在该位置有一个JavaScript对象,特别是一个函数,它可以稍后执行。在您的原始代码中发生的是JavaScript引擎正在寻找一个函数,但却在那里看到了一些其他代码——因此它在那里执行代码(激活警报),希望返回一个有用的对象。(当不返回任何内容时,JavaScript引擎会假定您希望在单击事件上执行
null
,并且很高兴这样做。)

您需要将警报包装在回调函数中,就像第一个示例:

$('.tweet li a.username').on('click', function() { alert('hey!') });

.on
方法期望在该位置有一个JavaScript对象,特别是一个函数,它可以稍后执行。在您的原始代码中发生的是JavaScript引擎正在寻找一个函数,但却在那里看到了一些其他代码——因此它在那里执行代码(激活警报),希望返回一个有用的对象。(当不返回任何内容时,JavaScript引擎会假定您希望在单击事件上执行
null
,并且很高兴这样做。)

这是因为您在那里调用警报函数,而不是传递回调函数引用

在本例中,您正在调用
alert()
函数,并将
alert
返回的值作为click事件处理程序传递

$('.tweet li a.username').on('click', function(){
    alert('hey!')
});

这是因为您正在那里调用警报函数,而不是传递回调函数引用

在本例中,您正在调用
alert()
函数,并将
alert
返回的值作为click事件处理程序传递

$('.tweet li a.username').on('click', function(){
    alert('hey!')
});

知道了。以前试过,但没有得到警告。我一定是选错了,明白了。以前试过,但没有得到警告。我一定是选错了。