重新为操作元素分配jquery ajax功能

时间:2013-02-05 21:20:31

标签: jquery ajax

我在JS中有一个名为AssignAJAXEvents()的函数,其设置如下:

function AssignAJAXEvents(containerSelector)
{
    containerSelector = containerSelector || 'body';

    $("input[type='submit']",containerSelector).filter('.ajax').unbind('click').bind('click',function(){
        var container = $(this).closest('*.lc');

        $.ajax({
            beforeSend: function(){ $(loading).show(); },
            timeout: 60000, // 60 seconds
            error: function() { },
            type: "POST",
            dataType: "html",
            data: post_data,
            url: "/ajax.php?Ajax&Page=" + page + "&" + action_name + "=" + action_value,
            success: function(data) {
                $(loading).hide();

                container.hide().replaceWith(data).show();

                AssignAJAXEvents(container);
            }
        });

        return false;
    });
}

jQuery(document).ready(function() {
    AssignAJAXEvents();
});

当页面最初加载时,函数将事件加载到“body”,这是整个元素..当ajax调用完成时,我想将此事件仅加载到受影响的容器中...否则会浪费资源已经分配的事件和整个“身体”匹配的元素将受到影响。

如何将此事件仅分配给新填充的容器?

1 个答案:

答案 0 :(得分:0)

function AssignAJAXEvents(containerSelector)
{
    containerSelector = containerSelector || 'body';

    $("input[type='submit']",containerSelector).filter('.ajax').one('click',function(){
    var container = $(this).closest('*.lc');
     $.ajax({
        beforeSend: function(){ $(loading).show(); },
        timeout: 60000, // 60 seconds
        error: function() { },
        type: "POST",
        dataType: "html",
        data: post_data,
        url: "/ajax.php?Ajax&Page=" + page + "&" + action_name + "=" + action_value,
        success: function(data) {
            $(loading).hide();
            container.hide().replaceWith(data).show();
            AssignAJAXEvents(container);
        }
    });

    return false;
    });
}