V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
swuhvxee
V2EX  ›  问与答

各位大神有没睡着的吗, jquery 问题求解答

  •  
  •   swuhvxee · 2016-03-31 00:56:24 +08:00 · 1346 次点击
    这是一个创建于 3178 天前的主题,其中的信息可能已经有所发展或是发生改变。
    刚学 jq ,不太熟悉。
    下面有一个 div
    <div id="talk">
    <div>
    刚进入的时候 div 内可能为空,如何在当 div 内有内容时候执行事件呢?
    8 条回复    2016-03-31 14:00:11 +08:00
    nine
        1
    nine  
       2016-03-31 01:01:58 +08:00
    if $('#talk').text() != ''
    swuhvxee
        2
    swuhvxee  
    OP
       2016-03-31 01:11:23 +08:00
    @nine 谢谢,这种是监听吗,会不会产生效率问题。我刚才写了个 if 判断,能用是能用,不过打开网页超过 30 秒,直接卡的浏览器崩溃了
    abelyao
        3
    abelyao  
       2016-03-31 02:03:59 +08:00
    @swuhvxee

    一楼那个当然不是监听,在 JavaScript 中更多的是靠 “回调” 来触发事件,达到像监听一样的效果。如果你写了一个 while 循环一直在做 if 判断,卡死是早晚的事。

    比较传统一点的方法是在 div 有内容之后,主动调用你要执行的事件。

    玩得个性点的,可以看看这篇文章: https://davidwalsh.name/detect-node-insertion ,利用 CSS 3 的动画来触发事件。
    swuhvxee
        4
    swuhvxee  
    OP
       2016-03-31 02:18:27 +08:00
    @abelyao xiexie ,3Q
    shinwood
        5
    shinwood  
       2016-03-31 07:03:58 +08:00 via iPhone
    用 MutationObsever 来监控 div 内容是否有变化。
    jame
        6
    jame  
       2016-03-31 10:18:12 +08:00
    监听 DOM 更改事件
    https://developer.mozilla.org/en-US/docs/XUL/Events#Mutation_DOM_events


    document.addEventListener('DOMNodeInserted',function(){alert(1)},false);
    document.addEventListener('DOMAttrModified',function(){alert(1)},false);
    document.addEventListener('DOMNodeRemoved',function(){alert(1)},false);
    swuhvxee
        7
    swuhvxee  
    OP
       2016-03-31 13:02:52 +08:00
    @shinwood
    @jame
    谢谢 2 个都看了,兼容性有点低
    shinwood
        8
    shinwood  
       2016-03-31 14:00:11 +08:00   ❤️ 1
    https://github.com/megawac/MutationObserver.js

    这里有一个兼容性比较高的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   897 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 19:38 · PVG 03:38 · LAX 11:38 · JFK 14:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.