V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
IdJoel
V2EX  ›  jQuery

jquery 引入在底部 $ready 就要用到$ 但页面还没加载 jquery 不用$ready 下面的 jq 代码就没办法运行

  •  
  •   IdJoel · 2016-10-21 11:00:46 +08:00 · 3497 次点击
    这是一个创建于 2963 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我用了 js 的 window.onload = function(){}方法,虽然是好用的,但还是请问如何让 jq 在底部引用还可以在 jq 的引用上面使用$方法;

    第 1 条附言  ·  2016-10-21 11:57:23 +08:00

    图片 这个是hexo的代码 jquery引用在了底部

    18 条回复    2016-10-22 02:00:05 +08:00
    IdJoel
        1
    IdJoel  
    OP
       2016-10-21 11:24:42 +08:00
    是这个问题太简单没有人愿意回答吗?
    halfcoder
        2
    halfcoder  
       2016-10-21 11:39:38 +08:00
    是什么原因让你没法做到先引入 jquery 再使用$,我很好奇
    qiayue
        3
    qiayue  
       2016-10-21 11:43:16 +08:00
    $(function(){
    ;;;;//code here
    });
    hansnow
        4
    hansnow  
       2016-10-21 11:44:47 +08:00
    在引入 jquery 之前就是没办法用$
    starvedcat
        5
    starvedcat  
       2016-10-21 11:45:17 +08:00
    无责任脑补一下:
    jquery 引入在底部,$ready 就要用到$,但页面还没加载 jquery ,(但如果)不用$ready ,下面的 jq 代码就没办法运行
    Trim21
        6
    Trim21  
       2016-10-21 11:47:47 +08:00 via Android
    为什么不能把引用放到上面或者代码放到下面?
    oa414
        7
    oa414  
       2016-10-21 11:52:08 +08:00
    jQuery 作为最基础的库应该在 head 标签里面阻塞地引入,然后 DOM 底部调用 $.ready 。

    或者用模块加载器引入 jQuery, 并用模块加载器在 jQuery 加载完成之后执行 $.ready 部分代码 (估计你做的东西没有复杂到要这样做不可) 。

    我猜你想在底部引入是为了让 DOM 内容加载更快,但是我觉得压缩+CDN 加载已经够快了,如果是移动端弱网环境,可以考虑内联 Zepto 。
    IdJoel
        8
    IdJoel  
    OP
       2016-10-21 11:52:30 +08:00
    @starvedcat 我就是你这么想的 无限死循环 我快死在这里面了
    @qiayue 我试过了 也不好用 onload 都不行
    @Trim21
    @halfcoder
    @hansnow
    是 hexo 的模板里面把 jq 引到下面去了 我在页面中想写一段 demo 展示效果 我没改 hexo 的默认模板
    IdJoel
        9
    IdJoel  
    OP
       2016-10-21 11:53:06 +08:00
    @oa414 HEXO 的默认模板 jquery 引用就是在底部的。
    hansnow
        10
    hansnow  
       2016-10-21 11:55:14 +08:00
    @IdJoel 那就在你加的代码前先引一下 jquery ,代码可以从底部复制,这样也不会增加太多负担
    IdJoel
        11
    IdJoel  
    OP
       2016-10-21 11:58:54 +08:00
    @hansnow 对于这种引两个 jq 的做法。。。我觉得我宁愿用 window.onload = function(){}..... 不过还是谢谢了~~
    ChiangDi
        12
    ChiangDi  
       2016-10-21 11:59:30 +08:00 via Android
    你咋不上天
    archey
        13
    archey  
       2016-10-21 12:06:20 +08:00
    在引入的 js 的 js 里面,在引入 jq 嘛,不想改模版的话
    IdJoel
        14
    IdJoel  
    OP
       2016-10-21 13:05:07 +08:00
    @ChiangDi 有这个想法,请问提供飞船吗。
    m939594960
        15
    m939594960  
       2016-10-21 13:06:17 +08:00
    setInterval(function (){
    if(typeof jQuery == 'undefined'){
    console.log('没加载 jquery')
    }else{
    console.log('js 加载好了 请写你的逻辑')
    }
    },1000)
    m939594960
        16
    m939594960  
       2016-10-21 13:06:36 +08:00
    ```js
    setInterval(function (){
    if(typeof jQuery == 'undefined'){
    console.log('没加载 jquery')
    }else{
    console.log('js 加载好了 请写你的逻辑')
    }
    },1000)
    ```
    HaEx
        17
    HaEx  
       2016-10-21 17:07:13 +08:00
    不错
    SoloCompany
        18
    SoloCompany  
       2016-10-22 02:00:05 +08:00
    <script>
    var yourBootstrapFunction = function() {
    $("p").text("The DOM is now loaded and can be manipulated.");
    };
    </script>

    html here
    <p>Not loaded yet.</p>

    <script src="jquery.js"></script>
    <script> $(document ).ready(yourBootstrapFunction); </script>
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1006 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 19:10 · PVG 03:10 · LAX 11:10 · JFK 14:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.