tür ve ada göre hedef girdi (seçici)


133

Bir sayfadaki tüm girişler olmasa da bazıları için bazı onay kutusu girişlerini gizli girişler olarak değiştirmem gerekiyor.

<input type="checkbox" name="ProductCode"value="396P4"> 
<input type="checkbox" name="ProductCode"value="401P4"> 
<input type="checkbox" name="ProductCode"value="F460129">

Aşağıdaki jquery kodu yalnızca, tüm onay kutularının gizli girişler olarak değiştirilmesine neden olan girişi türe göre seçer. Seçici olarak hem input = "checkbox" hem de name = "ProductCode" türünü kontrol etmenin bir yolu var mı, böylece bunları özellikle hedefleyebilirim değiştirmek istediğimi

$("input[type='checkbox']").each(function(){
var name = $(this).attr('name'); // grab name of original
var value = $(this).attr('value'); // grab value of original
var html = '<input type="hidden" name="'+name+'" value="'+value+'" />';
$(this).after(html).remove(); // add new, then remove original input
});

Yanıtlar:


286

Birden çok öznitelik seçici istiyorsunuz

$("input[type='checkbox'][name='ProductCode']").each(function(){ ...

veya

$("input:checkbox[name='ProductCode']").each(function(){ ...

Seçmek istediklerinizi belirlemek için bir CSS sınıfı kullanmak daha iyi olacaktır, ancak modern tarayıcıların çoğu, document.getElementsByClassNameöğeleri seçmek için kullanılacak ve nameözniteliğe göre seçimden çok daha hızlı olacak yöntemi uyguladığından


İkisi de benim için çalıştı ama ben ikinci yöntemi kullandım. THX, başka bir sorum var ama yeni bir soru soracağım.
user357034

22

Özellik seçicilerini şu şekilde birleştirebilirsiniz:

$("[attr1=val][attr2=val]")...

böylece bir elemanın her iki koşulu da karşılaması gerekir. Elbette bunu ikiden fazla kullanabilirsiniz. Ayrıca yapmayın [type=checkbox]. jQuery'nin bunun için bir seçici vardır, yani :checkboxsonuç şu şekildedir :

$("input:checkbox[name=ProductCode]")...

Öznitelik seçiciler yavaştır, bu nedenle önerilen yaklaşım, mümkün olan yerlerde kimlik ve sınıf seçicileri kullanmaktır. İşaretlemenizi şu şekilde değiştirebilirsiniz:

<input type="checkbox" class="ProductCode" name="ProductCode"value="396P4"> 
<input type="checkbox" class="ProductCode" name="ProductCode"value="401P4"> 
<input type="checkbox" class="ProductCode" name="ProductCode"value="F460129">

aşağıdakilerin çok daha hızlı seçicisini kullanmanızı sağlar :

$("input.ProductCode")...

Açıkçası bu da işe yarıyor, ancak doğru yanıt için yalnızca bir kişiye kredi verebilirim. :) Düşünülen bir şey, sınıfa göre hedefleyemem, çünkü bir sınıf eklemediğim sürece işaretlemeye erişimim yok ve bu ne anlama geliyor? Ama Thx !!!
user357034

6
input[type='checkbox', name='ProductCode']

CSS yolu bu ve jQuery'de çalışacağından neredeyse eminim.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.