当前位置: 首页 > 面试题库 >

$(document).ready等同于没有jQuery

徐皓君
2023-03-14
问题内容

我有一个使用的脚本$(document).ready,但没有使用jQuery中的其他任何脚本。我想通过删除jQuery依赖项来减轻它的负担。

如何在$(document).ready不使用jQuery的情况下实现自己的功能?我知道使用window.onload会有所不同,因为window.onload在加载所有图像,帧等之后会触发。


问题答案:

有一个基于标准的替代品,尽管IE8不DOMContentLoaded支持,但超过98%的浏览器都支持它:

document.addEventListener("DOMContentLoaded", function(event) { 
  //do work
});

jQuery的本机功能比window.onload复杂得多,如下所示。

function bindReady(){
    if ( readyBound ) return;
    readyBound = true;

    // Mozilla, Opera and webkit nightlies currently support this event
    if ( document.addEventListener ) {
        // Use the handy event callback
        document.addEventListener( "DOMContentLoaded", function(){
            document.removeEventListener( "DOMContentLoaded", arguments.callee, false );
            jQuery.ready();
        }, false );

    // If IE event model is used
    } else if ( document.attachEvent ) {
        // ensure firing before onload,
        // maybe late but safe also for iframes
        document.attachEvent("onreadystatechange", function(){
            if ( document.readyState === "complete" ) {
                document.detachEvent( "onreadystatechange", arguments.callee );
                jQuery.ready();
            }
        });

        // If IE and not an iframe
        // continually check to see if the document is ready
        if ( document.documentElement.doScroll && window == window.top ) (function(){
            if ( jQuery.isReady ) return;

            try {
                // If IE is used, use the trick by Diego Perini
                // http://javascript.nwbox.com/IEContentLoaded/
                document.documentElement.doScroll("left");
            } catch( error ) {
                setTimeout( arguments.callee, 0 );
                return;
            }

            // and execute any waiting functions
            jQuery.ready();
        })();
    }

    // A fallback to window.onload, that will always work
    jQuery.event.add( window, "load", jQuery.ready );
}


 类似资料:
  • 问题内容: 在ajax导航页面中,用于执行初始化javascript的经典“文档就绪”表单根本不会触发。 在ajax加载的页面中执行某些代码的正确方法是什么? (我的意思是,不是我的ajax …这是将我带到该页面的jQuery移动页面导航系统) 好的,我确实怀疑这样的事情……非常感谢=)但是…仍然不起作用,这是我的代码: 我需要指定div ID吗? 问题答案: 我花了一些时间来研究它,因为此时JQ

  • 问题内容: 是以下简写吗? 我看到这种模式使用了很多,但是我找不到任何引用。如果它是的简写,是否有任何特定原因可能不起作用?在我的测试中,它似乎总是在ready事件之前触发。 问题答案: 的简写是(函数在哪里)。看这里。 您问题中的代码与无关。相反,它是一个以jQuery对象作为参数的立即调用的函数表达式(IIFE)。其目的是将变量的范围至少限制在其自己的块中,以免引起冲突。您通常会看到jQuer

  • 问题内容: 题: 如果我链接两个都带有函数的JavaScript文件,会发生什么情况?一个会覆盖另一个吗?还是两者都被叫? 例如, jquery1.js: jquery2.js: 我相信最好的方法是将两个调用简单地合并为一个,但是在我的情况下这不太可能。 问题答案: 所有人都会被执行, 并且在首次调用的基础上运行!! 演示如您所见,它们不会互相替换 我还要提一件事 代替这个 您可以使用此快捷方式

  • 问题内容: 我正在使用jQuery在UpdatePanel中的元素上附加一些鼠标悬停效果。事件绑定在中。例如: 当然,这在第一次加载页面时效果很好,但是当UpdatePanel执行部分页面更新时,它不会运行,并且鼠标悬停效果在UpdatePanel内部不再起作用。 不仅在首页加载时,而且在每次UpdatePanel触发部分页面更新时,建议在jQuery中进行接线的推荐方法是什么?我应该使用ASP.

  • 问题内容: 什么是非jQuery等效项? 问题答案: 有趣的是,它可以在之前触发。加载功能会一直等到所有内容加载完毕,包括外部资源和图像。但是,当DOM树完成并且可以进行操作时会触发。如果您想在没有jQuery的情况下实现DOM就绪,则可以签入此库。有人从jQuery中提取了一部分。它的大小不一,您可能会发现它很有用:

  • 问题内容: 好的,这可能只是一个愚蠢的问题,尽管我敢肯定会有很多其他人不时问同样的问题。我,我只是想以任何一种方式100%确定它。有了jQuery,我们都知道精彩之处 但是,假设我要运行一个用标准JavaScript编写且没有库支持的函数,并且我想在页面准备就绪后立即启动一个函数。解决这个问题的正确方法是什么? 我知道我可以做: …或者我可以使用标记: …或者我什至可以尝试在页面底部输入所有内容,