2014-06-23 35 views
1

我创建了一个网页,使用AJAX请求填充div的内容。没有从AJAX结果处理HTML的jQuery事件

我使用

$('#div_id').html(data); 

填充div和这工作得很好。

但是,所有返回的内容都失去了它的JQuery,没有更多的onclick事件和没有JQueryUI小部件。

我已经打过电话了所有这些

$('#div_id').trigger('create'); 
$('#div_id').html(data).trigger('create'); 
$('body').trigger('create'); 

和所有与“pagecreate”,而不是创建相同的。

这一切都没有工作,虽然我发现,所有我发现谷歌搜索与JQuery Mobile有关,所以我可以完全吠叫错误的树。

感谢

+1

您需要使用[事件委托](http://learn.jquery.com/events/event-delegation/)。 –

+2

由于元素在DOM加载后被追加,因此需要使用委托事件处理函数:'$(document).on('create','#div_id',fn);' –

回答

0

你需要,当你添加新的元素,以这样的DOM使用事件委托。

很难给出一个确切的答案没有看到的HTML,而是说你有一个按钮,你与上单击处理增加......你会处理程序连接到#div_id,而不是像这样:

$('#div_id').on('click', 'button', function() { 
    //do your thing... 
}); 

on方法中的第二个参数是将分派事件的元素。你可以把它想象成一个“if”语句。处理程序被附加到祖先元素,当事件冒泡时,事件被触发。当它被触发时,第二个参数被检查。它说“做了”按钮“派发此事件?”,如果答案是“是”,则函数回调将运行。