我需要将dir=auto
添加到多个ul
元素中,这些元素会在多个事件发生时动态添加。
由于这些事件不在我的控制之下(有些是插件,有些是ajax结果等),我不想偶尔添加一行代码
如何添加$("ul").attr("dir","auto")
,使任何相关元素在添加到页面后都具有属性?
答案 0 :(得分:2)
如果我理解正确,您需要在文档/ dom中添加一个监听器,以便在动态添加<ul>
后知道,然后检查<ul>
是否已被修改加载(为他们添加其他attri?)。
一旦<ul>
被修改或被添加到文档中,听众应该工作,然后过滤/选择<ul>
并应用您的.attr
功能。 Check this和this
我在我的控制台上为这个SO页面测试了代码,它似乎正在运行。我正在使用FF26,因此这样的事情可能有所帮助:
//listen to parent to know if it's being modified. you can listen to <ul> if you want to check if it has modified if you want to do something with <li> for example.
$("#parentDiv").bind("DOMSubtreeModified", function() {
//your code here
$("ul").attr("dir","auto");// to all <ul> in the page
//or only filter ul that belongs to this div
// this.find("ul").attr("dir","auto");
});
我认为this答案有更准确的结果,因为(DOMSubtreeModified
)似乎已被弃用(尽管它运作正常)。
如果稍后会添加<ul>
(未知时间),那么在我看来,您有两种选择:
body
或包含<ul>
的父div,并在添加<ul>
时监控,然后应用您的attr。 setInterval
以确保每隔几秒钟检查页面中是否有<ul>
? 我更喜欢选项1,因为我读过选项2(使用setInterval
)可能会增加一些开销。 Ref.。