为什么匿名jQuery回调不会触发?

时间:2012-05-29 22:17:52

标签: jquery javascript-events callback anonymous-function jquery-callback

根据文档,这应该有效:

$('#content').on( 'load', function(event){
    alert('ready')
})

但事实并非如此。 http://jsfiddle.net/SJKqt/

这确实有效:

$('#content').on( 'load', alert('ready') )

但我无法让匿名函数运行。

2 个答案:

答案 0 :(得分:2)

以下元素支持onload事件:

<body>, <frame>, <frameset>, iframe, <img>, 
<input type="image">, <link>, <script>, <style>

所以我猜你没有在其中一个上注册处理程序。

答案 1 :(得分:0)

来自the jQuery page on .load()

  

与图像一起使用时加载事件的注意事项

     

开发人员尝试使用.load()快捷方式解决的常见挑战是在图像(或图像集合)完全加载时执行函数。应该注意有几个已知的警告。这些是:

     
      
  • 它不能始终如一地工作,也不能可靠地跨浏览器
  •   
  • 如果图像src设置为与之前相同的src,则无法在WebKit中正确触发
  •   
  • 它没有正确地冒泡DOM树
  •   
  • 可以停止触发已存在于浏览器缓存中的图像
  •   
     

注意:.live()和.delegate()方法不能用于检测iframe的load事件。 load事件没有正确地冒泡父文档,而且事件委托所需的Firefox,IE9或Chrome都没有设置event.target。

您的jsFiddle在iframe中运行,这可能是您的代码无法在那里工作的原因之一。