swuhvxee
V2EX  ›  问与答

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

  •  
  •   swuhvxee · Mar 31, 2016 · 2055 views
    This topic created in 3876 days ago, the information mentioned may be changed or developed.
    刚学 jq ,不太熟悉。
    下面有一个 div
    <div id="talk">
    <div>
    刚进入的时候 div 内可能为空,如何在当 div 内有内容时候执行事件呢?
    8 replies  •  2016-03-31 14:00:11 +08:00
    nine
    nine
    Mar 31, 2016
    1
    if $('#talk').text() != ''
    swuhvxee
    swuhvxee
    OP
    Mar 31, 2016
    2
    @nine 谢谢,这种是监听吗,会不会产生效率问题。我刚才写了个 if 判断,能用是能用,不过打开网页超过 30 秒,直接卡的浏览器崩溃了
    abelyao
    abelyao
    Mar 31, 2016
    3
    @swuhvxee

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

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

    玩得个性点的,可以看看这篇文章: https://davidwalsh.name/detect-node-insertion ,利用 CSS 3 的动画来触发事件。
    swuhvxee
    swuhvxee
    OP
    Mar 31, 2016
    4
    @abelyao xiexie ,3Q
    shinwood
    shinwood
    Mar 31, 2016 via iPhone
    5
    用 MutationObsever 来监控 div 内容是否有变化。
    jame
    jame
    Mar 31, 2016
    6
    监听 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
    swuhvxee
    OP
    Mar 31, 2016
    7
    @shinwood
    @jame
    谢谢 2 个都看了,兼容性有点低
    shinwood
    shinwood
    Mar 31, 2016❤️1
    8
    https://github.com/megawac/MutationObserver.js

    这里有一个兼容性比较高的。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   948 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 20:03 · PVG 04:03 · LAX 12:03 · JFK 15:03
    ♥ Do have faith in what you're doing.