对于自定义事件,jQuery触发器不会使用bind()或on()触发

时间:2012-06-04 16:51:48

标签: jquery triggers bind jquery-events custom-events

有谁能告诉我为什么这段代码不起作用?

$('body').on('test', function() {
  alert('test');
});

$('body').trigger('test');

我正在使用 jquery-1.7.2.min 。我没有任何错误,只是没有任何反应。

我已经尝试将代码放在内联脚本中,在$(document).ready()内,但仍然没有。我也尝试了on()bind()两种结果。我看到所有示例都显示相同的语法,所以有什么不同呢?

2 个答案:

答案 0 :(得分:8)

似乎问题在于DOM已经准备好了。将代码放在内联脚本中是行不通的。将它置于$('document').ready()内部将使用匿名函数,但由于某种原因,不能使用'()'函数调用..此代码有效

$(document).ready(start);
function start(){
$('body').on('test', function() {
  alert('test');
});

$('body').trigger('test');
}

但这没有... *注意函数调用括号。

$(document).ready(start());
function start(){
$('body').on('test', function() {
  alert('test');
});

$('body').trigger('test');
}

一个确切的示例在jsfiddle上有两种方式,但由于某种原因,只有一种方法可以在我的服务器上运行。我想提出另一个问题,但至少我们可以看到这段代码确实有效,我的东西有一些奇怪的异常:/

答案 1 :(得分:1)

尝试授权:

$(document).on('test', 'body', function() {
  alert('test');
});

$('body').trigger('test');

这就像live()一样。 http://api.jquery.com/live/