.load事件处理程序无法正常工作

时间:2011-11-15 06:07:00

标签: javascript jquery

我正在努力解决我所拥有的issue并决定尝试.load() jQuery函数的事件处理程序。我不确定我做错了什么。 jQuery page上的示例是:

$('#book').load(function() {
 // Handler for .load() called.
});

我的剧本是:

var $j = jQuery.noConflict();
$j('#gallery-nav-instruct').load(function() {
  if(!$j.cookie('gallerycookie')){
    $j.colorbox({ inline:true, href:"#gallery-nav-instruct"});
    $j.cookie("gallerycookie", 1, {expires: 30, path: '/'});
  }
}); 

为什么我的脚本不起作用?

以下是与该脚本相关的HTML:

<div style="display:none">
  <div id="gallery-nav-instruct">
    <h2>Gallery Navigation Instructions - Step 1</h2>
    <h2 style="text-align:right">
      <a style="text-align:right;" class="inline cw" href="#gallery-enlarge-instruct">Step 2</a>
    </h2>
    <p>&nbsp;</p>
    <p class="white">
      <img src="/Images/Pages/gallery-navigation.jpg" width="890" height="450" alt="Gallery Navigation Instructions" />
    </p>
  </div>
</div>

2 个答案:

答案 0 :(得分:1)

您是否有办法在事件发生时确认div尚未加载?换句话说,这可能是一个时间问题。加载完成后,事件被绑定,但事件永远不会被触发,因为负载已经完成。

我很想知道你要解决的问题;而不是解决.load()本身的问题(尽管这可能最终成为工具!)最好留出横向思维的空间。例如,我不明白为什么你不能在文件准备好的情况下进行cookie检查和颜色盒初始化。可能是图像尚未加载,但我认为这不会破坏用户体验。

答案 1 :(得分:0)

尝试将您的脚本放在页面的末尾。那可能有用。只有当所有内容都被加载时它才会执行,因为当完全加载父内部的所有内容时调用.load()事件。

This应该帮助你