2013-10-10 44 views
4

是否确定混合在window.onload和$(函数(){}); jQuery在同一个脚本中?

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

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

为什么这是必要的? –

+2

他们是两个完全不同的东西,他们绝对可以混为一谈。你应该混合他们吗?这是一个意见,将取决于情况。我倾向于避免需要。 –

+0

我尝试了一些代码在那里上网,利用在window.onload上再有就是它利用jQuery的$方法其他一些片段。所以我想知道如果我继续这样做类似的东西,那么它可能会导致任何问题的稳定与否。 – Dev

回答

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'); 
}); 

或与本地JavaScript window.load事件

// 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文档ready()也可以:http://api.jquery.com/ready/

你可以做到这一点,以确保DOM是检查window.load事件之前准备就绪。它可以放在yes外,但有时候由于不同的浏览器不一致以及其他脚本的加载。

它完全可以接受window.load事件进入ready函数,以保证window.load事件在DOM已准备就绪,而不是之前。

由于jQuery的准备功能,在某些情况下,有时会解雇所有图像已被加载之前。当ready()事件内部时,如果加载了所有图像,链接等,一旦ready处理程序运行,window.load事件将立即触发。

+1

JQuery API文档提到了以下内容: .ready()方法通常与属性不兼容。如果必须使用加载,请不要使用.ready()或使用jQuery的.load()方法将加载事件处理程序附加到窗口或更多特定项目,如图像 ...正文onload与window onload ? – Dev

+0

jQuery load()事件从jQuery版本1.8开始被删除,不再使用,sibce会很快从jQuery core中移除。 http://api.jquery.com/load-event/ - 这就是为什么我使用上面的jQuery on()方法来绑定负载事件的负载手柄。正文onload是一个内联事件,它被附加到body标签..窗口事件实际上是DOM中的顶层,window.load通过窗口对象附加了一个加载事件..在我上面的示例中,您不需要使用body onload属性..它最好具有您的JavaScript外部比内联属性 –

-1

我不知道你为什么会因为他们基本上做同样的事情,所以应该没有问题。

+5

'$(document).ready'不会等待图像,'window.onload'(或'$(window).load')。我认为。 –

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相当于jQueryload事件,即$(window).load(function() { // ... })

Check this example(两个事件一个接一个地发生,ready然后onload)。

0

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

$(function() { });$(document).ready(function() { });的DOM已成功创建之后就被触发,因此,当你可以肯定,你可以选择任何/特定的元素。