5

one()イベントハンドラーでjQueryメソッドを使用して、一度起動してから登録解除しています。何かのようなもの:

$(".main").one('mousedown', '.resizeBar', function (e) { /* my code */ });

次に、一部の ajax (実際には .net ポストバック) によってページのほとんどが (リロードせずに) リセットされ、イベント ハンドラーを再度セットアップしたいと考えています。one()イベント ハンドラーを再度アクティブにリセットする方法はありますか? 明らかに、この方法で手動で再トリガーしても機能しません。

$(".main .resizeBar").trigger("mousedown");
4

2 に答える 2

19

そのコードを関数でラップするだけです

function mainMouseDownOne() {
    $(".main").one('mousedown', '.resizeBar', function (e) { /* my code */ });
}

$(document).ready(function(){
    mainMouseDownOne();

    .ajax({
        ...
        success: function() {
            ...
            mainMouseDownOne();
        }
    })
});
于 2012-08-03T17:40:34.217 に答える
4

one() メソッド bind を関数呼び出し内にラップすることをお勧めします。そうすれば、ページの読み込み時に (初期イベント ハンドラーをバインドするために) 関数を呼び出し、Ajax 呼び出しが成功したときに再び呼び出すことができます。

var bindEvents = function(){
  $(".main").one('mousedown', '.resizeBar', function (e) { /* my code */ });
};

$(function(){ bindEvents(); }); // call the one() method on page load.

$.post(pageURL, function(data){
  bindEvents(); // As an example, after some sort of Ajax or post-reset event.
});
于 2012-08-03T17:43:20.523 に答える