0
function bindALLFunctions() {
  ..all triggers functions related go here
};


$.ajax({
        type: 'POST',
        url: myURL,
        data: { thisParamIdNo: thisIdNo },
        success:    function(data){
                        $(".incContainer").html(data);
                        bindALLFunctions();
        },
        dataType: 'html'
});

私はajaxとJQueryが初めてです。js-jquery コードに上記の ajax 呼び出しがあります。bindALLFunctions(); ajax 呼び出し後にすべてのトリガーと関数を再呼び出しするために使用されます。期待どおりにすべて正常に動作します。ただし、最初のアクションが完了した後に何かをロードする方が良い場所を読んだので、次の2つを追加/編集しようとしましたが、成功しませんでした. 何か案は?

1) ->    $(".incContainer").html(data, function(){
                                          bindALLFunctions(); 
                                        });

2) ->    $(".incContainer").html(data).bindALLFunctions();
4

3 に答える 3

1

おそらく、ライブ関数とデリゲート関数を確認する必要があります。アプリの開始時に一意のイベント ハンドラーを設定すると、読み込まれたすべての ajax コードが自動的にバインドされます。

$("table").delegate("td", "hover", function(){
    $(this).toggleClass("hover");
});

しかし、Jquery.ajax 呼び出しを使用したい場合は、次のようにする必要があります。

$.ajax({
        type: 'POST',
        url: myURL,
        data: { thisParamIdNo: thisIdNo },
        success:    function(data){
                        $(".incContainer").html(data);
                        bindALLFunctions(".incContainer");
        },
        dataType: 'html'
});

次のように変換bindALLFunctionsします。

function bindALLFunctions(selector) {
  ..all triggers functions related go here. Example:
  $('#foo', selector).bind('click', function() {
     alert('User clicked on "foo."');
  });
};

指定されたセレクターの「下」でのみイベントをバインドします。

于 2011-10-14T08:12:39.870 に答える
0

あなたの質問からあなたが何を尋ねようとしているのかを判断するのは難しいですが、私の推測では、ready関数について知りたいのでしょう。ドキュメントが利用可能になった後に bindALLFunctions を呼び出すことができます。$(document).ready(bindALLFunctions)またはを行うだけです$(document).ready(function() { bindALLFunctions(); })

于 2011-10-14T08:17:29.233 に答える
0

最初のコードは問題ありませんでした。html()関数にコールバック関数がないため、新しいバージョンは動作しません。

于 2011-10-14T08:12:56.367 に答える