在 jQuery - 动态添加中选择 DOM 元素
Select DOM elements in jQuery - Dynamically Added
在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 以查找新节点之外,实际上没有任何选择,这是非常低效的。
答案是,这取决于如何将元素插入 DOM 中。如果你通过jQuery插入它们,那么你可以使用像livequery这样的插件。如您所见,它挂接到核心操作方法,每当调用它们时,它都会运行在实时查询上注册的回调。如果您通过香草JS插入元素,那么正如其他人所说,DOM互助事件已被弃用且不可靠,因此轮询将是您的最佳选择。
我知道
这篇文章很旧,但我相信这可以使用jQuery find方法完成。
http://jsfiddle.net/vreTG/1/
// 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");
相关文章:
- 当我认为它不应该重新渲染视图时,如何防止 Meteor 在 html 选择 dom 单击事件上重新渲染视图
- 在chrome扩展程序上下文菜单中获取选择DOM
- jQuery - aria-controls vs data 属性来识别/选择 DOM 元素 - 这是首选方法
- 如何选择 DOM 中除一个元素之外的所有元素
- 如何从 HTML 中选择 DOM 元素 由 rails 助手生成的 HTML image_tag
- 在 jQuery - 动态添加中选择 DOM 元素
- 使用TweenSite/GSAP选择DOM对象的最佳方式
- Angular 2.x选择DOM元素
- 使用for循环在javascript中选择dom
- 在jquery中选择DOM时遇到问题
- 在使用ajax将html插入页面后选择dom元素
- 我应该通过id/类名或数据属性来选择DOM元素吗
- 如何使用部分属性名选择DOM元素
- 取消选择DOM元素
- 通过带有特殊符号的id选择DOM元素
- 在Chrome控制台选择DOM元素
- 使用函数选择DOM元素
- 根据ID值选择DOM元素
- 在D3中选择DOM元素,但不选择其子元素
- 使用Protractor,我如何在基于文本的列表中选择DOM对象