window.load和document.ready中的jQuery data()是否未定义?

时间:2011-12-15 01:20:11

标签: javascript jquery dom javascript-events

需要在window.load中存储一些数据并在document.ready中检索:

<script>
   $(window).load(function() { // Store here
      $('img.storable').each(function() {
         $(this).data("key", "value");
         console.log($(this).data("key")); // Output: value
      };
   };

   $(document).ready(function() { // Retrieve here
      $('img.storable').each(function() {
         console.log($(this).data("key")); // Output: undefined!
      };
   };
</script>

document.ready中的输出未定义。我错过了关于dom事件的事情吗?

2 个答案:

答案 0 :(得分:6)

$(document).ready()在DOM加载后立即运行,但$(window).load()将不会运行,直到DOM加载并且所有dom资源都已加载(如图像和CSS文件和内容)。这意味着$(document).ready()将在您设置值之前运行。

答案 1 :(得分:2)

我认为文档就绪发生在window.load之前... 所以它应该完全相反

只做一个简单的测试:

$(document).ready(function() {
   alert('document ready');
});
$(window).load(function() {
   alert('window load');
});