0

私は Web アプリケーションを構築していますが、しばらくの間、Ajax によって HTML をページにロードするときに、$(document).ready() 内の関数を更新する必要があることに悩まされていました。

たとえば、私がこれを持っているとしましょう:

$(document).ready(function () {

    $('#searchInput').keyup(function () {
        // Do something
    });

});

ただし、id="searchInput" の入力フィールドは、DOM のロード時にロードされません。ユーザーが特定の要素をクリックすると、後で ajax を使用してロードされます。id="searchInput" の入力フィールドがロードされましたが、元の DOM にロードされていないため、keyup(function) は #searchInput をリッスンしません。

今のところ、私の唯一の解決策は次のようにすることです:

function loadEvents() {
    $('#searchInput').keyup(function () {
        // Do something
    });
}

$(document).ready(function () {
    loadEvents();
});

そして、ajaxで成功します:

succes:
    function() {
        loadEvents();
    }

これは機能します...しかし、もっと賢い方法があると思わずにはいられません...

loadEvents() 内に複数の関数がありますが、ajax 呼び出しが成功するたびにすべての関数をリロードするのが最善の解決策ではないようです。

もちろん、その後、多くの異なる ajax 呼び出しを行うことができます。これは、ajax で必要な特定の関数を実行することに成功しますが、その後、多くの異なる ajax 関数を作成する必要があります。

より良い解決策はありますか?

4

1 に答える 1

0

次のコードを使用して、すべての成功コールバック コードを 1 か所に統合​​できます。

$(selector).ajaxSuccess(function(event,xhr,options){
     //DO YOUR STUFF HERE
});

詳細については、http://api.jquery.com/ajaxSuccess/を参照してください。

于 2012-10-16T21:50:57.010 に答える