2016-05-16 3 views
0

せずに動作していない私は、次のjqueryのAJAX呼び出しがあります。jQueryのカスタムイベントは、setTimeoutを

$.ajax({ 
    type: "POST", 
    url: url, 
    data: data, 
    success: function (data, textStatus, jqXHR) {       
    // Without setTimeout, the triggerHandler doesn't work 
    setTimeout(function (e) {       
     $(this).triggerHandler($.Event("CustomEvent")); 
    }); 
    } 
}); 

、別の場所で:

$(this).on('CustomEvent', function (evt) { 
    alert("CustomEvent"); 
}); 

上記のコードは、警告が表示されます。しかし、私がtriggerHandlerを呼び出す場合は、のsetTimeoutが呼び出されることはなく、警告は表示されません。これが動作するためにsetTimeoutが必要であると思われるアイデアはありますか?

+0

完全なjsコードを投稿することは役に立ちます...または最小限の作業例 –

+3

私は 'this'のスコープが' $ 'の' success'ハンドラ内にあるとは思いません.ajax' –

+0

あなたのajaxの 'complete'関数に入れてみてください。 –

答えて

0

"this"は必ずしも "this"ではありません。

setTimeout方法が動作する場合、あなたのイベントが$(window)上にあるので、これは動作するはずです:

success: function (data, textStatus, jqXHR) {       
    $(window).triggerHandler("CustomEvent"); 
} 

方法でjQueryのイベント・オブジェクトを作成する必要はありません。

+0

男のウィンドウが動かない – jeevanswamy21

関連する問題