2010-11-18 4 views
3

.noAjaxを持たないid #filterの中のすべての<a>要素のAjaxコールを作成しようとしていますが、何とかそれを動作させることができません。誰かが私の構文を見てもらえますか?jQuery .notセレクタは.delegateで動作しますか?

$("#filter").not($("a.noAjax")).delegate("ul#portfolio-list li a", "click", function() { 
    if ($.browser.msie) { 
     location.hash = "#/" + this.pathname; 
    } else { 
     location.hash = this.pathname; 
    } 
    return false; 
}); 

私はちょうど.delegateすべてでは何も作品のセレクタとして(私はもちろん試す前に追加された)aまたはa.ajaxを使用するようにしてください。アヤックス作品以上のjQueryを使って、それは私が代わりに:not()セレクタを使用しa.noAjax

答えて

10

のリンクをクリックした場合でもコンテンツをロードしようとします:

$("#filter").delegate("ul#portfolio-list li a:not(.noAjax)","click",function() { 
    if ($.browser.msie) { 
     location.hash = "#/" + this.pathname; 
    } else { 
     location.hash = this.pathname; 
    } 
    return false; 
}); 

それとも以来、代わりにul要素に委譲でしたそれが改善されたセレクタのパフォーマンスのために、ユニークなIDを使用しています:

$("#portfolio-list").delegate("li a:not(.noAjax)", ...); 
+0

すべてのお返事ありがとうございます。 .notと:との間には何の違いがありますか? – tobiasmay

+1

@tobias: '.not'は、既に取得された要素のセットで実行されるフィルタメソッドです。 ':not'は要素の問い合わせ中に実行されるセレクタです。 'delegate()'は、clickイベントまでセレクタを実行しません。そのため、メソッドの代わりにセレクタが必要です。 –

+0

jqueryに手を差し伸べてくれてありがとう。 – tobiasmay

0

この:

$("#filter").not($("a.noAjax")). 

はこのように、a要素にする必要があります:あなたがしているもの、

$("#filter a").not("a.noAjax") 

それとも本当に後:

$("#portfolio-list").delegate("li a:not(.noAjax)", "click", function() 
0

はこれに最初の部分を変更してみてください:

$("#filter a").not($(".noAjax")).del... 

他の方法では、#filterのすべての要素が選択されます。 a.noAjax(非アンカータグを含む)ではありません。

関連する問題