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

时间:2011-09-21 17:18:09

标签: javascript jquery ajax cakephp

这里有一点问题。我的网站上有一个帖子流,每个帖子都有执行我$(document).ready()中设置的不同操作的按钮,添加帖子我做了一个AJAX调用,返回新的post元素的html,但是动作在我之前的$(document).ready()中,不适用于此新元素,并在元素的$(document).ready()中添加该元素会导致已发布元素中的按钮被复制。

知道如何解决这个问题吗?

3 个答案:

答案 0 :(得分:3)

在documnet ready事件之后添加的元素不接受绑定事件(您称之为注释)。您可以使用.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 
})

答案 1 :(得分:1)

如果您使用$(selector).live(eventType, handler),它应该向匹配该选择器的所有元素添加事件..即使它们是在加载DOM后添加的:

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

答案 2 :(得分:0)

像@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+

link:jQuery .live()

我遇到了同样的问题,最后一个问题出现在" .on"对我来说很好。

也许某人有同样的问题并且也使用它