0

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呼び出しが完了したら、影響を受けるコンテナにのみこのイベントを読み込みます。それ以外の場合は、すでに割り当てられているリソースを浪費します。イベントと「本体」に一致する要素全体が影響を受けます。

このイベントを新しく入力されたコンテナにのみ割り当てるにはどうすればよいですか?

4

1 に答える 1

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;
    });
}
于 2013-02-05T21:51:23.987 に答える