2010-11-18 18 views
3

sınıfına sahip olmayan öğesindeki tüm Ajax çağrılarını yapmaya çalışıyorum ve bir şekilde işe yaramayacağım. Birisi benim sözdizime bir göz atabilir mi lütfen? jQuery .not seçici, .delegate ile çalışır mı?

$("#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; 
}); 

ben sadece .delegate boşuna seçici olarak (i ​​tabii denemeden önce eklendi) a veya a.ajax hiç çalışır kullanmayı deneyin

. ajax eserler üzerinde jquery, fakat bu i a.noAjax

cevap

10

Kullanım yerine :not() seçici bir bağlantıyı tıklayın dahi içerik yüklemeye çalışır:

$("#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; 
}); 

Yoksa beri yerine ul elemana temsilci olabilir geliştirilmiş seçme performans için, benzersiz bir kimlik kullanıyor:

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

. ama .not ile kullanma arasındaki fark nedir? – tobiasmay

+1

@tobias: '.not', önceden elde edilmiş bir dizi eleman üzerinde çalışan bir filtre yöntemidir. ': değil' elemanları için sorgu sırasında çalışan bir seçici. Delege() ', tıklama etkinliğine kadar seçiciyi çalıştırmaz, bu nedenle yöntem yerine seçiciye ihtiyacınız vardır. –

+0

Netleştirme için teşekkürler - sadece ellerimi jquery'de alıyorum. – tobiasmay

0

Bu:

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

böyle, a unsurları olmalı: sen ne

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

Ya gerçekten sonra:

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

Buna ilk bölümü değiştirmeyi deneyin:

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

Diğer yol, #filter'daki tüm öğeleri seçecektir. a.noAjax değil (sabit olmayan etiketler dahil). Tüm cevaplarınız için