ajax成功后jQuery重新绑定监听器

时间:2013-06-01 14:23:22

标签: jquery ajax events listener bind

我正在尝试向通过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。

1 个答案:

答案 0 :(得分:1)

在replaceWith()doc中,您可以阅读:

  

用提供的元素替换匹配元素集中的每个元素   新内容和返回已删除的元素集

所以在这里,你在删除元素上调用init()函数。