2

行を削除する次の関数があります。を渡してこの関数を再利用したいと思い#search_resultます。

function row_delete_ajax(event) {
    event.preventDefault();
    if (confirm(gettext('Are you sure you want to delete this row?'))) {
    var url = $(this).attr("href") + "/";

        $.post(url, function(result){
            $('#search_result').empty();
            $('#search_result').append(result);
        });                
    }       
};

これは私が最初に関数をバインドする方法ですが、渡す方法がちょっと行き詰まってい#search_resultますrow_delete_ajax

$(document).ready(function (){  
    $('#search_result').find(".row_delete_ajax").click(row_delete_ajax);
}
4

3 に答える 3

3

それを行う別の方法は、[eventData]パラメータを使用することです。

eventData: イベント ハンドラーに渡されるデータのマップ。

$(document).ready(function (){  
    // Create an object with all the properties you want.
    var data = { id: '#search_result' }; 

    // Pass the data object as the first parameter in the click-event.
    $('#search_result').find(".row_delete_ajax").click(data, row_delete_ajax);
});

そして、次のように使用します。

function row_delete_ajax(event) {
    event.preventDefault();
    if (confirm(gettext('Are you sure you want to delete this row?'))) {
    var url = $(this).attr("href") + "/";

        $.post(url, function(result){
            $(event.data.id).empty();
            $(event.data.id).append(result);
        });                
    }       
};

たとえば、event.dataも確認してください。

于 2012-11-21T21:23:21.920 に答える
2

data() http://api.jquery.com/jQuery.data/を使用してメタ情報を保存することを考えましたか?

$(document).ready(function (){  
    $('#search_result').find(".row_delete_ajax")
        .data('target', 'search_result')
        .click(row_delete_ajax);
}

次に、row_delete_ajax は次のようになります。

function row_delete_ajax(event) {
    event.preventDefault();
    if (confirm(gettext('Are you sure you want to delete this row?'))) {
        var url = $(this).attr("href") + "/";

        var target = $(this).data('target');
        $('#' + target).load(url);
    }
}
于 2012-11-21T21:12:37.687 に答える
2

クリックを次のように少し書き直す必要があります。

$(document).ready(function (){  
    $('#search_result').find(".row_delete_ajax").click(function (event) {
        row_delete_ajax(event, $("#search_result"));
    });
}

次に、両方のパラメーターを取るように関数を変更します。

function row_delete_ajax(event, searchResult) {
    event.preventDefault();
    if (confirm(gettext('Are you sure you want to delete this row?'))) {
        var url = $(this).attr("href") + "/";

        $.post(url, function(result){
            searchResult.empty();
            searchResult.append(result);
        });                
    }       
};
于 2012-11-21T21:13:33.743 に答える