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

2016-03-31 00:56:24 +08:00
 swuhvxee
刚学 jq ,不太熟悉。
下面有一个 div
<div id="talk">
<div>
刚进入的时候 div 内可能为空,如何在当 div 内有内容时候执行事件呢?
1349 次点击
所在节点    问与答
8 条回复
nine
2016-03-31 01:01:58 +08:00
if $('#talk').text() != ''
swuhvxee
2016-03-31 01:11:23 +08:00
@nine 谢谢,这种是监听吗,会不会产生效率问题。我刚才写了个 if 判断,能用是能用,不过打开网页超过 30 秒,直接卡的浏览器崩溃了
abelyao
2016-03-31 02:03:59 +08:00
@swuhvxee

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

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

玩得个性点的,可以看看这篇文章: https://davidwalsh.name/detect-node-insertion ,利用 CSS 3 的动画来触发事件。
swuhvxee
2016-03-31 02:18:27 +08:00
@abelyao xiexie ,3Q
shinwood
2016-03-31 07:03:58 +08:00
用 MutationObsever 来监控 div 内容是否有变化。
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
2016-03-31 13:02:52 +08:00
@shinwood
@jame
谢谢 2 个都看了,兼容性有点低
shinwood
2016-03-31 14:00:11 +08:00
https://github.com/megawac/MutationObserver.js

这里有一个兼容性比较高的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/267492

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX