我正在尝试向通过AJAX插入的DOM对象添加行为。
根据我在jQuery Api Docs中的内容,我认为最好有一些范围onInit(scope)
处理程序来对新内容执行事件绑定。
到目前为止,我已经得到了这个:
function onInit(scope) {
console.log('init', scope);
$('.sometestclass', scope).css({'color':'red'});
}
(function($) {
$(document).ready(function(){
$(document).on('click', '.ajax-button', function(event){
event.preventDefault();
$target = $(this);
$.ajax({
url: 'validUrl',
...
success: function(data) {
var $new = $target.replaceWith(data);
onInit($new);
},
});
});
onInit(this);
});
})(jQuery);
通过firebug我可以验证ajax调用是否成功,内容会根据需要被替换。在document.ready事件和ajax.sucess事件之后调用onInit
。 firebug控制台中没有显示错误。
然而,第二次onInit($ scope)调用没有任何反应。
我在这里做错了什么?
使用的jquery版本是1.9.1。
答案 0 :(得分:1)
在replaceWith()doc中,您可以阅读:
用提供的元素替换匹配元素集中的每个元素 新内容和返回已删除的元素集。
所以在这里,你在删除元素上调用init()
函数。