javascript - 自动给动态添加的html元素添加属性

标签 javascript jquery html

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

由于这些事件不在我的控制范围内(有些是插件,有些是ajax结果等)我不想零星地添加一行代码

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

最佳答案

如果我理解正确,您需要向文档/dom 添加一个监听器以了解一旦动态添加了 <ul>,然后在加载 之后检查 <ul> 是否也被修改(以添加其他他们的属性?)

一旦 <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>

我更喜欢选项 1,因为我读过选项 2(使用 setInterval )可能会增加一些开销。 Ref.

关于javascript - 自动给动态添加的html元素添加属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21361626/

相关文章:

javascript - 验证 JavaScript 中任意两个特定字母的输入,例如 'a' 和 'i',并将 'a' 替换为 @,将 'i' 替换为?

jQuery 向下移动列表框中的多个项目

php - 使用多个文本框中的单个值到 php 的 sql 查询中?

html - &lt;input&gt; 中的字体大小小于 <body> 中的字体大小

javascript - 如何滚动以生成 native javascript?

javascript - JQuery 按钮点击不起作用

javascript - 如何从模式弹出文本字段的无序列表中编辑特定列表项

jquery - 如何选择所有有id的元素,适用于正则表达式

javascript - 在没有 html lang 标签的情况下更改不同语言的字体和字体大小

jQuery - 移动横幅有效但位置不正确