替代 "$(document).ready" 函数

31

我在一个aspx页面中使用fancybox。document ready函数在该页面中无法为灯箱工作。有人告诉我要编写新的javascript代码来加载该页面上的灯箱。


3
如果您想在所有内容加载完成后执行脚本,请使用 $(window).load(function(){ // ...}) - Ram
@undefined,这与$(document).ready(function(){ ... })几乎相同。load()将等待图形加载完成。 - alexbusu
为什么 $(document).ready 不起作用?你确保已经引入了 jQuery 吗? - TheNameless
1
首先尝试使用jQuery.noConflict()方法。 - Buzz
5个回答

48
  • 引入jQuery。
  • 检查网络选项卡,确保没有出现404错误。
  • 检查控制台,确保没有出现“$未定义”的提示。

在DOM准备就绪时执行操作。

$(function(){
   // DOM Ready - do your stuff 
});

6
我认为他的意思是替代jQuery加载事件。 - Claudiu
4
不管OP的意思是什么,我一直通过谷歌重新访问这个页面(因为我似乎忘记了这个巧妙的约定)。感谢@user338195! - kingPuppy

44

试试这个:

document.addEventListener('DOMContentLoaded', function() {
   // ...
});

适用于现代浏览器和IE9以上版本


请记住,如果DOM已经加载,这将无法工作。 如果这是一个问题,请查看以下答案:https://dev59.com/A3RA5IYBdhLWcg3w2x6Whttps://dev59.com/PWkw5IYBdhLWcg3wbqAS - Pikamander2

7
您可以使用标准的JS onload函数来运行,如果您缺少它的话:
window.onload = function() {};

请注意,这可能会对库造成问题 - 我还没有进行调查。

4
我认为使用脚本标签defer是最好的解决方案。例如,
<script src="demo_defer.js" defer></script>

More information at W3 Schools.


我其实不知道这个,而我有点自豪于了解常见的“未知”哈哈。谢谢! - E10

3
最佳方法是这样使用的:
jQuery.noConflict();
(function($) {
  $(function() {
   // by passing the $ you can code using the $ alias for jQuery
   alert('Page: ' + $('title').html() + ' dom loaded!');
  });
})(jQuery);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接