我正在尝试向通过 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 调用是否成功,内容会根据需要被替换。onInit
在 document.ready 事件和 ajax.sucess 事件之后被调用。firebug 控制台中没有显示任何错误。然而,对第二个 onInit($scope) 调用没有反应。
我在这里做错了什么?
使用的 jquery 版本是 1.9.1。