Целевой ввод по типу и имени (селектор)
Мне нужно изменить некоторые вкладки checkbox на скрытые входы для некоторых, но не для всех входов на странице.
<input type="checkbox" name="ProductCode"value="396P4">
<input type="checkbox" name="ProductCode"value="401P4">
<input type="checkbox" name="ProductCode"value="F460129">
Код jquery ниже выбирает только вход по типу, который заставляет все флажки заменяться на скрытые входы. Есть ли способ проверить как тип ввода = "флажок", так и 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
});
Ответы
Ответ 1
Вы хотите несколько селекторов атрибутов
$("input[type='checkbox'][name='ProductCode']").each(function(){ ...
или
$("input:checkbox[name='ProductCode']").each(function(){ ...
Было бы лучше использовать класс CSS для определения тех, которые вы хотите выбрать, однако, поскольку многие современные браузеры реализуют метод document.getElementsByClassName
, который будет использоваться для выбора элементов и будет намного быстрее, чем выбор name
Ответ 2
Вы можете комбинировать селектора атрибутов следующим образом:
$("[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")...
Ответ 3
input[type='checkbox', name='ProductCode']
Это способ CSS, и я почти уверен, что он будет работать в jQuery.