2011-01-28 14 views
9

ama hepsi, aşağıdaki html var sınıf, ama "ilk" sınıfı tutan kimse, herhangi bir düşünce?jQuery seçici küçük bir jQuery seçiciler sorum var ilk

+1

olası bir kopyası [jQuery tüm hariç ilkini seçin] (http://stackoverflow.com/questions/2259393/jquery-select-all-except-first) – bwright

+0

Her ikisinden de [all-elements-of-the-first ] (https://stackoverflow.com/q/2259393/673991) veya [all-elements-in-a-class] (https://stackoverflow.com/q/4614120/673991). Her iki şekilde de, bu soru, özellikle "ilk" ilk öğenin sınıfını adlandırarak kafa karıştırıcıdır. Bu yüzden cevaplar şunları içerir: '':: (: önce) ''ve'': değil (.first) ''ve hatta' ': değil (ilk)''! –

cevap

16
$('.member-info:not(.first)').hide(); 

Bu first sınıfla unsurları dışlamak için not-selector(docs) kullanır.

Veya first sınıfın amacı ilk tespit etmek basitçe ise

, o zaman bunun yerine bunu:

$('.member-info').slice(1).hide(); 

Bu ikinci maçında başlayan bir dizi döndürmek için slice()(docs) yöntemini kullanır.

+1

+1 dilim() daha hızlı olacak çünkü jQuery öğesinin bir öğeyi bir diziden kaldırması değil. – Keltex

+0

@Keltex: Katılıyorum. İlk sınıfın her zaman sette ilk maçta olduğu sürece, bir dilim yapmak gitmek için bir yol olacaktır. – user113716

+0

@Keltex true, ancak daha net olanı seçilmelidir, çünkü sınıf seçimi herhangi bir etki yaratamaz. (Her zaman performansla ilgili olduğunda, önce ve sonra profili) – cobbal

2

Bu, sorunuzu tam olarak yanıtlayamıyor, ancak ilk eşleştirilen öğeyi gt kullanarak atlayabilirsiniz. Örneğin

:

$('div.member-info:gt(0)') 

Bkz: http://api.jquery.com/gt-selector/

+0

Teşekkürler @ Jon- bu bana biraz yardımcı oldu. Neden diğerlerinin olmadığından emin değilim. –

0

Bu çalışması gerekir:

$('.member-info').not('.first').hide(); 

not() kullanma.

2

:not() selector'u kullanın. Örneğin:

$(".member-info:not(first)").hide(); 

ilk Eğer denemek gerçekten her zaman ilk çocuğu yaklaşık $('.member-info').not('.first').hide();

0

. Ancak, elemem için öğemi işaretleyen first adlı bir sınıf uygun bir şekilde elimde yoktu. Aklıma gelen

$('.member-info:not(:first)');//grab all .member-info except the first match 
1

Ben de bu konuda nasıl geldi

$(".member-info:not(member-info:first)").hide(); 
3
$(".member-info:not('.first')").hide(); 
$(".member-info").filter(":not('.first')").hide(); 
$('.member-info').not('.first').hide(); 

$(".member-info:not(:first)").hide(); 
$(".member-info").filter(":not(':first')").hide(); 
$('.member-info').not(':first').hide(); 

$(".member-info:not(:eq(0))").hide(); 
$(".member-info").filter(":not(':eq(0)')").hide(); 
$(".member-info").not(":eq(0)").hide(); 

$(".member-info:not(:lt(1))").hide(); 
$(".member-info").filter(":not(':lt(1)')").hide(); 
$(".member-info").not(":lt(1)").hide(); 

$(".member-info:gt(0)").hide(); 
$(".member-info").filter(':gt(0)').hide(); 

$(".member-info").slice(1).hide(); 

tüm olası yolları: İşte bu örnekte bağlamında seçicinin için kullanılan çözüm oldu. Ayrıca bazı beklenmedik sonuçlar bulabileceğiniz JavaScript performance comparison'u da yaptım.

Bu örneklerin tümü v1.10. * JQuery ile çalışır.

Çoğu kez bu hızlı $(".member-info").slice(1).hide(); ve ilgili değil, beyin fırtınası cevap benziyor

0

@AuthorProxy, @David Thomasve@Maximilian Ehlers hepsi çok hızlı ve çok okunabilir bir çözümdür cevaplarında $('.member-info').not('.first').hide(); düşündürmektedir.Çünkü jQuery seçiciler değerlendirilir yol

sağdan sola-aslında bu değerlendirmenin hızı yavaşlar oldukça okunaklı ".member-info:not(.first)". örneğin

:

hızlı ve kolay anlaşılır çözelti gerçekten işlev sürüm .not(".first") hatta sadece .not(":first") kullanıyor İlgili seçiciler

$(".member-info").not(".first").hide(); // Class selector 

veya

$(".member-info").not(":first").hide(); // Positional selector 

JSPerf:http://jsperf.com/fastest-way-to-select-all-expect-the-first-one/6

.not(':first')slice(1) daha sadece birkaç puan daha yavaştır, ancak tüm ilki hariç istediğim" olarak çok okunabilir ".