2010-03-02 20 views
149

ben ad özelliğinde köşeli parantez vardır bu öğeyi seçin çalışıyorum: denedimjQuery seçici

<input type="text" name="inputName[]" value="someValue"> 

bu (hangi çalışmıyor) :

$('input[inputName[]=someValue]') 

ve ne gelmez bu:

$('input[inputName&#91;&#93;=someValue]') 

veya bu:

$('input["inputName[]"=someValue]') 

DÜZENLEME: bazılarınız işaret gibi, $('input[inputName=someValue]') işe asla. Yapmaya çalıştığım: $('input[name=inputName][value=someValue]'). (Ancak, [], name niteliğinde).

+4

@Maerlyn, evet, bu soruyu neredeyse bir yıl öncesinden sorduğum diğer sorudan önce. – aidan

cevap

215

@Dancrumb, bu deneyin:

$('input[inputName\\[\\]=someValue]') 

[DÜZENLE] Ancak, ben senin seçicinin için doğru sözdizimi emin değilim. Muhtemelen istiyorum: seçici bir değişken içinde bulunur

$('input[name="inputName[]"][value="someValue"]') 
+25

İyi yakalama. İki ters eğik çizgiye ihtiyaç duyulmasının nedeni, tek bir ters eğik çizgi, bir JavaScript dizisi kaçış karakteri olarak yorumlanmasıdır. Bu nedenle, karaktere kaçış karakterini sağlayan bir tam ters eğik çizgi belirtmek için ikisine ihtiyacınız vardır ... ah, birden çok karakter seviyesinin sevinçleri kaçan. – Peter

+0

Bu Gumbo'nun cevabı aşağıda verilen deli. Kaçmaktan kaçının .. Hayır, teşekkürler! –

+0

TEŞEKKÜR EDERİZ !! Tam olarak ihtiyacım olan şey. –

47

Nitelik seçici sözdizimi [name=value] olup, burada name öznitelik adıdır ve value öznitelik değeridir.

Yani özelliğin name değeri inputName[] sahip tüm input unsurları seçmek istiyorsanız:

$('input[name="inputName[]"][value=someValue]') 
:

$('input[name="inputName[]"]') 

Ve (: name ve value burada) iki özellik için kontrol etmek istiyorsanız

+2

Bu, bu boşluktan kaçıştan çok daha hoş ve Chrome 9 ve IE6'da çalıştığını doğrulayabilirim. JQuery sürümü burada 1.4.4 – pablobm

+0

Bu cevabı eklediğiniz için teşekkür ederiz!Seçicilerin dinamik olarak oluşturulmasında alıntılar kullanmak kaçan çözümden daha pratiktir. – octern

+0

Benim için 1.8.3, güzel çalışıyor. –

70

jQuery seçicilerinizde "komik" karakterlerden alıntı yapmak için ters eğik çizgi kullanabilirsiniz:

$('#input\\[23\\]') 

nitelik değerleri için kullanabileceğiniz tırnak: Artık

$('input[name="weirdName[23]"]') 

, ben de seni örnek karıştı biraz değilim; HTML’niz tam olarak neye benziyor? Özellikle "inputName" dizesi nerede görünür?

düzenleme sabit bogosity; teşekkürler jQuery documentation Başına

+3

jQuery belgeleri, kaçış için iki ters eğik çizgi gerektiğini belirtir. – Dancrumb

+2

oh durr haklısın - jQuery'nin kendisi için değil, ama Javascript tek olanları ayrıştıracak! Teşekkürler. – Pointy

+0

oyu takiben – Dancrumb

4

, aşağıdaki kod faydalı olabilir: biz çift ters eğik çizgi ile tüm özel karakterler öneki Bu durumda

selector_name = $this.attr('name'); 
//selector_name = users[0][first:name] 

escaped_selector_name = selector_name.replace(/(:|\.|\[|\])/g,'\\$1'); 
//escaped_selector_name = users\\[0\\]\\[first\\:name\\] 

.

+1

selector.replace (/ (\ [| \])/g, '\\\\ $ 1'); Benim için biraz daha iyi çalıştı çünkü kaçan eğik çizgi ekliyor ve iki tane ürpertiyor ... tek bir kaçış değil ... – Fydo

+1

Bu sadece TOTALLY beni bağladım! Teşekkür ederim!! –

+0

@Fydo, ayrıca kolonlar, dönemler de dahil olmak üzere diğer bazı karakterlerden kaçmanız gerektiğini unutmayın. –