在 jQuery 中,您可以使用.live()
、.on()
和.delegate()
将事件绑定到页面上尚未添加的 DOM 元素。
是否可以使用类似的技术来选择尚未添加的 DOM 元素以应用某些功能?
例如,我想选择所有具有类 .req 并包含一个名为“必需”的水印的输入元素。
我已经使用 jquery 插件来做水印,但不能处理动态添加到页面的 DOM 元素。
在 jQuery 中,您可以使用.live()
、.on()
和.delegate()
将事件绑定到页面上尚未添加的 DOM 元素。
是否可以使用类似的技术来选择尚未添加的 DOM 元素以应用某些功能?
例如,我想选择所有具有类 .req 并包含一个名为“必需”的水印的输入元素。
我已经使用 jquery 插件来做水印,但不能处理动态添加到页面的 DOM 元素。
您可以使用突变事件( DOMNodeInserted
),但它们已被弃用。
因此,除非您想使用它们或每 X 次拉动 DOM,否则答案是否定的
牵引方式:
setInterval(function(){
// Do what you want here.
$('.req').watermark("Required");
}, 500); // evey half a second.
抱歉不行。事件委托之所以有效,是因为您在技术上绑定到已经存在的 DOM 节点,因此最终触发事件的元素还不存在并不重要。有 DOM 级别 2 事件正在进行中(并且已经在某些浏览器中实现)可以让您对正在创建的新 DOM 节点或正在操作的现有节点做出反应,但是在浏览器支持更好之前,实际上没有任何选项除了重复轮询 DOM 来寻找新节点,这是非常低效的。
我知道这篇文章很旧,但我相信这可以使用 jQuery find方法来完成。
// Generate some dynamic content
var dyn = '<ul>';
dyn += '<li class="req">Name</li>';
dyn += '<li class="req">Address</li>';
dyn += '<li class="opt">Phone Number</li>';
dyn += '<ul>';
// Add to DOM
$("#container").html(dyn);
// Find required fields
$("#container").find(".req")
.prepend("* ")
.css("color", "#900");