14

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

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

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

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

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

4

2 回答 2

8

看来问题在于 DOM 以某种方式准备就绪。将代码放在内联脚本中是行不通的。将它放在 a$(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上可以双向使用,但由于某种原因,我的服务器上只有一种方式可以使用。我想这会引发另一个问题,但至少我们可以看到这段代码确实有效,我的东西有一些奇怪的异常:/

于 2012-06-04T17:54:59.597 回答
2

尝试委托:

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

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

这就像以前的 live() 一样工作。 http://api.jquery.com/live/

于 2012-06-04T17:07:01.737 回答