混合window.onload和jQuery $(function(){})

时间:2013-10-10 17:41:01

标签: javascript jquery

混合window.onload和$(function(){})是否可以;在同一个脚本中的jQuery?

    <script type="text/javascript">
        this.onload = function () {
            // do something
        }

        $(function () {
            //do something
        });
    </script>

4 个答案:

答案 0 :(得分:0)

这将有效,因为$(function () { // ... })$(document).ready()的缩写形式,此事件在DOM解析/准备好后立即触发,但window.onload在所有资源加载后触发,包括所有图片,因此$(function () { // ... })首先会触发一次,然后onload事件将再次触发。

$(function () {
    console.log('reday event'); // this will fire at first
});

this.onload = function () {
    console.log('load event'); // this/second will fire after "ready" event
}

另外,请记住,window.onload相当于jQuery的{​​{3}}事件,即$( window ).load(function() { // ... })

load,(两个事件一个接一个地开始,ready然后onload。)

答案 1 :(得分:0)

你指的是window.onload = function () { };所有图片加载后会触发的等等。

成功创建DOM后会触发

$(function () { });$(document).ready(function () { });,因此,当您可以确定可以选择任何/特定元素时。

答案 2 :(得分:0)

完成你的要求是完全可以接受的:

// check when DOM is ready
$(function(){
    // place code here 
    console.log('DOM ready');
});

// check when all images, links and assets have been loaded
window.load = function(){
      // place code here 
      console.log('window loaded');
};

你也可以这样做,以确保在检查加载事件之前DOM已准备就绪

// check when DOM is ready
$(function(){       
      // check when all images, links and assets have been loaded
      $(window).on('load',function(){
           // place code here 
           console.log('window loaded');
      });
      console.log('DOM ready');
});

或使用window.load事件的原生javascript

// check when DOM is ready
$(function(){
      // check when all images, links and assets have been loaded
      window.load = function(){
          // place code here 
          console.log('window loaded');
      };
      console.log('DOM ready');
});

即使是JQuery API docs ready()也可以说:http://api.jquery.com/ready/

在检查window.load事件之前,您可以执行此操作以确保DOM已准备就绪。它可以放在yes之外,但有时由于浏览器的不一致性和其他脚本加载而导致。

完全可以接受window.load事件进入ready函数以保证window.load事件在DOM准备好之后而不是之前触发。

由于jQuery ready函数在某些情况下有时会在加载所有图像之前触发。当在ready()事件内部时,如果所有图像,链接等都已加载,则在运行就绪处理程序后,window.load事件将立即触发。

答案 3 :(得分:-1)

我不确定为什么你会这么做,所以应该没有问题。

相关问题