0

このjqueryイベントを機能させるための解決策が見つかりません。

$(window).one('click',function(){
   console.log('hide something');
   return false;
});

$('a.ajax').live('click', function(e){
   console.log('ajax requesting');
   return false;
});

「A」要素がデフォルトの代わりにajaxリクエストを実行し、ウィンドウのクリックイベントを1回発生させる必要があります。A のクリックから「return false」を削除すると、ウィンドウのクリックがトリガーされますが、最初のクリック後のデフォルトの動作は妨げられず、非 ajax リクエストが続行されます。

両方のハンドラーは異なるクロージャーにあるため、変数を作成して機能させることはできず、グローバル変数も作成したくありません。

上記の例から、結果は次のようになります:
-> ajax 要求 (1 回目のクリック)
-> 何かを非表示 (1 回目のクリック)
-> ajax 要求 (2 回目のクリック)
-> ajax 要求 (3 回目のクリック)

助けてくれてありがとう!

4

1 に答える 1

2

aイベント ハンドラーで、最初の行として追加しますe.preventDefault()(そして return false を削除します)。

$('a.ajax').live('click', function(e) {
    e.preventDefault();
    console.log('ajax requesting');
});

'return false' は将来のすべてのイベント (ウィンドウまで伝播されたものも含む) をキャンセルしますが、 preventDefault() は通常のアクションの発生を防止するだけで、イベント チェーンを続行します。

詳細: jQuery e.preventDefault ドキュメント

于 2012-04-10T17:31:04.633 に答える