向通过AJAX添加的DOM元素添加操作

Adding action to DOM element added through AJAX

本文关键字:添加 DOM 元素 操作 AJAX      更新时间:2023-09-26

这里有一个小问题。我在我的网站上有一个帖子流,每个帖子都有按钮,执行不同的动作,现在在我的$(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加载后添加的:

http://api.jquery.com/live/

@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.

也许有人有同样的问题,也使用它