向通过AJAX添加的DOM元素添加操作
Adding action to DOM element added through AJAX
这里有一个小问题。我在我的网站上有一个帖子流,每个帖子都有按钮,执行不同的动作,现在在我的$(document).ready()
中设置,添加帖子,我做一个AJAX调用,返回新的帖子元素的html,但是我以前的$(document).ready()
中的动作不适用于这个新元素,并在$(document).ready()
中添加它的元素导致按钮从已经发布的元素被复制。
你知道我该怎么解决这个问题吗?
在document ready事件之后添加的元素不接受绑定事件(您称之为ations)。您可以使用.click()
或.hover()
或.bind('click', function(){})
,两者都不工作。你可以使用jQuery .live()
或.delegate()
使用delegate
是更好的,因为当你使用live
click
(例如)这意味着你正在听任何click
发生在你的文档,并确定如果它是click
你在哪里寻找或不?但是对于delegate
,您可以限制计算机查找click
的点击次数。
$('.myinput').live('click', function(){
// do something if a click happened and it was on my input
})
$('.myDiv').delegate('.myinput', 'click', function(){
// do something if a click happened in my div and it was on my input
})
如果你使用$(selector).live(eventType, handler)
,它应该添加事件到所有的元素匹配的选择器。即使它们是在DOM加载后添加的:
@Mohsen说有一种方法可以解决这个问题,使用。live()现在它贬值了,还有另一种方法:
如何改变折旧方法?
$( selector ).live( events, data, handler ); // jQuery 1.3+
$( document ).delegate( selector, events, data, handler ); // jQuery 1.4.3+
$( document ).on( events, selector, data, handler ); // jQuery 1.7+
jQuery .live()
我有同样的问题,最后一个是"。On " works for me.
也许有人有同样的问题,也使用它
相关文章:
- 如何判断何时将dom节点添加到文档中
- 向动态生成的DOM添加Angular自定义指令
- 如果移除并重新添加DOM元素,则ng单击绑定丢失
- 使用 Knockout 动态添加 dom 元素
- jquery使用$.on来添加dom元素
- 如何在 HTML 结构中添加 DOM 模型
- 如何强制.prepend()和.append()添加DOM对象,而不是文本
- AngularJS添加DOM元素
- 添加DOM视图太慢了,需要一种更好的方法来缓存一次视图并重用它供以后使用
- 带有模板的Dojo小部件,在小部件加载时更改模板(添加DOM元素)
- 添加 DOM 元素,什么是正确的方法
- 如何在画布上添加DOM对象
- 如何在每次迭代中添加DOM对象
- jQuery show()不是一个函数-用于添加DOM元素
- 只能添加dom元素,但不能删除它们
- 在单击按钮时动态添加DOM元素
- 添加 DOM 元素时获取通知
- 如何在React中添加dom
- 如何在Div背景中添加DOM图像对象
- 如何在按钮中添加DOM附加的功能