自动为动态添加的html元素添加属性

时间:2014-01-26 09:05:19

标签: javascript jquery html html5

我需要将dir=auto添加到多个ul元素中,这些元素会在多个事件发生时动态添加。

由于这些事件不在我的控制之下(有些是插件,有些是ajax结果等),我不想偶尔添加一行代码

如何添加$("ul").attr("dir","auto"),使任何相关元素在添加到页面后都具有属性?

1 个答案:

答案 0 :(得分:2)

如果我理解正确,您需要在文档/ dom中添加一个监听器,以便在动态添加<ul>后知道,然后检查<ul>是否已被修改加载(为他们添加其他attri?)

一旦<ul>被修改或被添加到文档中,听众应该工作,然后过滤/选择<ul>并应用您的.attr功能。 Check thisthis

我在我的控制台上为这个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>(未知时间),那么在我看来,您有两种选择:

  1. 将监听器添加到body或包含<ul>的父div,并在添加<ul>时监控,然后应用您的attr。
  2. 添加setInterval以确保每隔几秒钟检查页面中是否有<ul>
  3. 我更喜欢选项1,因为我读过选项2(使用setInterval)可能会增加一些开销。 Ref.

相关问题