2009-05-07 21 views
1

てクリックからアンカータグを停止します。ページナビゲーション(First/Prev/1/2/3/Next/Last)は、私が取り組んでいるものです。私が最初にページにアクセスし、 "2"または "3"をクリックすると、私は期待どおりの動作をします。メニューが更新されたら、 "3"のような他の実行可能なオプションをクリックすると、JQuery呼び出しを実行する代わりにhttp://staging1.roomsalive.com/Catalog/Flooring/Hardwood/3にポストします。 99%は、ドキュメントをロードするときにJQueryのクリックイベントをメニューに添付するためです。しかし、それが返信されると、それらの出来事は失われます。どのように私はそれらをreattchですか?それは問題ですか?jQueryのは、私は次のコードを持っている

TIA

答えて

5

これには2つの理由が考えられますが、両方を解決する必要があります。ナビゲーションを更新するときにクリックハンドラで要素を置き換える場合は、ハンドラを再適用するか、セレクタに一致する現在または将来の要素にハンドラを自動的にバインドするライブバインディングを使用する必要があります。

$("#navIndex a").live('click', function() { 
    this.blur(); 
    return false; 
}); 

第2に、AJAXを呼び出すメソッドでfalseを返す間に、その値を呼び出しチェーンに反映させません。 click関数がupdateNavigationメソッドの結果を返すことを確認してください。あるいは単にfalseを返す。

$("#navIndex a").live('click', function(e) { e.preventDefault; return updateNavigation($(this).attr('href')); }); 
+1

ほとんど動作しています。今は、AJAX呼び出しにpageIndexではなくURL全体を渡しています。 JQueryは2回目を回ります。 ページを更新した後に添付されているものを調べる方法はありますか? –

+0

http://exceptioneer.com/Share/Summary.aspx?abf65e20-4903-4540-af9c-e57634f5ca8eを見て、2回目に何が渡されているのかを確認してください(1回目のajaxコールとナビゲーションコントロールの再作成後)。 .. –

+0

Web DeveloperプラグインでFirefoxを使用します。 「ソースの表示」をクリックし、「生成されたソースの表示」をクリックして、ajaxコール後のページ・ソースを表示します。 – tvanfosson

0

は試してみてください

$("#navIndex a").click(function(e) { 
    e.preventDefault(); 
    updateNavigation($(this).attr('href')); 
    return false; 
}); 
$("#navPrevNext a").click(function(e) { 
    e.preventDefault(); 
    updateNavigation($(this).attr('href')); 
    return false; 
}); 

//この行を削除してください - 私は最小6つの文字のルールを回避するために、これを追加しています。

0

イベントが初めてロードされたとき、イベントは要素にバインドされますが、それらの要素を削除して同様の要素に置き換えると、... new要素にイベントがバインドされていません。

$.html()呼び出しによってDOMが変更された後に、関数を新しい要素にバインドするための成功関数と失敗関数を変更できます。

関連する問題