2012-04-10 16 views
0

このjqueryイベントを機能させるための解決策が見つかりません。jquery:1つの(クリック)イベントでライブ(クリック)ajax

$(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リクエストが続行されます。

両方のハンドラが異なるクロージャになっているので、動作するのに役立つ変数を作成できません。グローバル変数も作成したくありません。以上の結果必要があります私の例から


は - >アヤックス(1クリック)を要求
- >非表示の何か(1クリック)
- >アヤックス(第2クリック)を要求
- >アヤックス(第3回クリックを要求)

ありがとうございます!

+0

私はここに新しいしているに気づきます。 StackOverflowへようこそ!私の答えが好きなら(下記)、正しい答えとして「受け入れる」の隣にある「チェックボックス」をクリックしてください。 – nzifnab

+0

うん。私はちょうどプログラミングの分野でいくつかの深刻な趣味をやり始め、Webアプリケーションを始めることに決めました。 :) ...ところで...私の英語を実感してください。 – Kevin

答えて

2

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

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

(でも伝播一つのウィンドウまで)今後のすべてのイベントをキャンセルします「falseを返す」、しかしでpreventDefault()は単に起こってから、通常の動作を妨げるが、イベントのチェーンを継続していきます。

詳細情報:jQuery e.preventDefault documentation

+0

ありがとうございます。今では、偽falseとpreventDefault()の違いを知っています。助けてくれてありがとう。 – Kevin

関連する問題