开发者社区> 问答> 正文

为什么写 $("document").ready() 仍然成功?

背景
在学习 jQuery 的时候,误把 $(document).ready() 写成了 $("document").ready() 后,ready 内的代码仍然成功执行?

问题
想问下为什么会这样?

展开
收起
小旋风柴进 2016-03-26 09:21:30 2181 0
1 条回答
写回答
取消 提交回答
  • $("document")结果是什么
    $("document")应该通过jQuery.fn.init( selector, context );这个函数来构造jQuery对象,
    这个函数有很多的分支,$("document")落在114行代码的这个分支上。

    if ( !context || context.jquery ) {
        return (context || rootjQuery).find( selector );
    }

    这里的context是undefined,根据短路原则if判断为真,所以执行
    return (context || rootjQuery).find( selector );
    但是这里又有分支,不难看出最终执行的是

    return (rootjQuery).find( selector );
    而rootjQuery是在722行赋值的rootjQuery = jQuery(document);
    因此,$("document")最终是jQuery(document).find("document");
    这个是结果是个jQuery对象:

    2019-07-17 19:15:16
    赞同 展开评论 打赏
问答分类:
问答地址:
相关产品:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载