цільовий ввід за типом та назвою (селектор)


132

Мені потрібно змінити деякі вхідні прапорці на приховані входи для деяких, але не всіх даних на сторінці.

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

Код jquery нижче вибирає лише введення за типом, що призводить до зміни всіх прапорців на приховані входи. Чи є спосіб перевірити обидва типи input = "checkbox" та name = "ProductCode" як селектор, щоб я міг спеціально націлити на них що я хочу змінити?

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

Відповіді:


285

Вам потрібно декілька селекторів атрибутів

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

або

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

Було б краще використовувати клас CSS для виявлення тих, які ви хочете вибрати, однак багато сучасних браузерів реалізують document.getElementsByClassNameметод, який буде використовуватися для вибору елементів і буде набагато швидшим, ніж вибір за nameатрибутом


Обидва працювали на мене, але я застосував другий метод. THX, у мене є ще одне питання, але я зроблю нове запитання.
користувач357034

22

Ви можете комбінувати селектори атрибутів таким чином:

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

так що елемент повинен задовольняти обом умовам. Звичайно, ви можете використовувати це більше двох. Крім того, не робіть [type=checkbox]. jQuery має для цього селектор, а саме :checkboxкінцевим результатом є:

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

Вибір атрибутів повільний, проте рекомендується використовувати підбірники ідентифікаторів та класів, де це можливо. Ви можете змінити розмітку на:

<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">

що дозволяє використовувати набагато швидший селектор:

$("input.ProductCode")...

Очевидно, що це добре працює, але я можу дати лише одній людині кредит за правильну відповідь. :) Одне з думок: я не можу орієнтуватися на клас, тому що у мене немає доступу до розмітки, якщо я не додаю клас і що це означатиме. Але Thx !!!
користувач357034

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

Це спосіб CSS, і я майже впевнений, що він буде працювати в jQuery.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.