2011-05-29 6 views
37

aşağıdaki çalışma almak gibi olamaz: jQuery - Birden Çok Seçici a: not()?

$('input:not([type=radio][type=checkbox])').live('click', function() { 
    alert("You haven't clicked a radio or checkbox!"); 
}); 

herkes bu konuda bana yardımcı olabilir, birkaç farklı sözdizimi 's denediniz.

Alkış
Charlie

+0

olası yinelenen [jQuery - katına: değil seçici] (http://stackoverflow.com/questions/7144976/jquery-multiple-not-selector) –

cevap

67

Sen multiple attribute selector ile multiple selector karıştırıyorsun. Sen yazmalısınız:

$("input:not([type=radio], [type=checkbox])"); 

birden özellik seçici [type=radio][type=checkbox] bu evrende olamaz kimin type nitelikleri hemradiovecheckbox eşit olan elemanları ile eşleşir.

+0

Mükemmel !, teşekkürler Frederic. Sanki bunlarla dalga geçiyormuşum gibi görünüyor. Bookmarked :) –

+0

Tüm evren için konuşmaya çalışmak yerine "html'nin bu uygulamasında gerçekleşemez" demek daha doğru olur diye düşünüyorum. Bu büyük bir * evren, bazı uzaylı ırkların, örneğin belirli bir öznitelik için virgülle ayrılmış değerler listesine izin veren bir html uygulaması olabilir. (* birçok kozmolog, evrenin aslında sonsuz olduğuna inanır; bu durumda, düşünebildiğiniz html'nin herhangi bir uygulaması, bir yerde var olacaktır) –

3

not()'un içindeki sözdizimi normal seçici sözdizimiyle aynıdır, bu nedenle bu türlerden olmayan şeylerle eşleştirmek istiyorsanız, her ikisiyle de aynı olmayan bir seçici kullanın. seçici). Bunu nasıl yaptın? Aynı yolu böylece, virgülle, CSS aynı anda birden çok Seçicilere stilleri uygulamak:

$('input:not([type=radio],[type=checkbox])') 

Ayrıca Bu gibi öğeleri hariç tutabilirsiniz değil [type=radio] değil [type=checkbox]

+3

Bunun sadece jQuery'nin ': not()' için geçerli olduğunu unutmayın. CSS3'ün ': not()' [basit seçici] bir şey kabul edemez (http://www.w3.org/TR/css3-selectors/#simple-selectors-dfn). Bu nedenle, jQuery'de basit bir seçiciden daha çok bir şey iletirseniz, modern tarayıcılar selektörü 'querySelectorAll() ile ayrıştıramazlar, böylece bir performans isabeti (mikroskobik bir tane varsa) olabilir. – BoltClock

+0

Evet, bu açıklama için teşekkürler, CSS karşılaştırmam CSS3 seçicisinin _doesn't_'ın bu şekilde çalıştığını netleştirmedi. – darkliquid

0

tüm ölçüm girişlerini seçmelisiniz O :

$('input').not('[type=radio], [type=checkbox]').live('click', function() { 
    alert("You haven't clicked a radio or checkbox!"); 
});