3

.ajaxSuccessコールバックを割り当てるネイティブjavascriptオブジェクトがあります。これの目的は、ajax呼び出しが成功した後にデータモデルを更新したいが、データモデルをjavascriptファイル全体に対してグローバルにしたくないためです。はい、スクリプトファイルの前にjQueryが含まれていることを確認しました。

コードは次のとおりです。

$("#formButtonAddLink").click(function() {
    $.ajax({
        type: "POST",
        url: "ajax/addlink",
        data: {content: $("#formInputLinkContent").val(), subject: $("#formInputLinkSubject").val()},
        dataType: "json",
        error: function() {
            alert("An ajax error occured adding link")
        }
    });
    return false; //prevents html form submit
})

$(document).ready(function(){
    var links = new Links(20,0);
    $(links).ajaxSuccess(function() {
        console.log("Hey.")    //This does not work.
    });
    $(document).ajaxSuccess(function() {
        console.log("Document hey.")   //This shows up.
    });
});
4

1 に答える 1

1

の基本的な考え方ajaxSuccess()は次のとおりです。

Ajaxリクエストが正常に完了すると、jQueryはajaxSuccessイベントをトリガーします。この時点で、.ajaxSuccess()メソッドに登録されているすべてのハンドラーが実行されます。

ドキュメントから理解できる限り、ajaxSuccess()イベントハンドラーは要素にのみアタッチでき、JavaScriptオブジェクトにはアタッチできません。これが、イベントハンドラーをにアタッチするときに機能する理由documentです。

イベントハンドラーは任意の要素にアタッチできます。

この場合、次のようなものがあります。

<div class="links"></div>

あなたができること:

$(document).ready(function(){
    $(".links").ajaxSuccess(function() {
        console.log("Hey.")
        // use links in here:
        var links = new Links(20,0);
    });
});
于 2012-09-07T20:56:43.700 に答える