按类型和名称(选择器)输入目标

我需要改变一些复选框输入隐藏的一些输入,但不是页面上的所有输入。

<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
});

272936 次浏览

您可以这样组合属性选择器:

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

所以一个元素必须满足两个条件。当然,你可以使用两个以上。还有,不要做 [type=checkbox]。JQuery 对此有一个选择器,即 :checkbox,因此最终结果是:

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

但是属性选择器很慢,所以推荐的方法是尽可能使用 ID 和类选择器。您可以将标记更改为:

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

你需要 一个 href = “ http://api.jquery.com/multi-tribute-selector/”rel = “ noReferrer”> multitribute selector

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

或者

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

最好使用一个 CSS 类来识别那些你想要选择的元素,因为许多现代浏览器都实现了 document.getElementsByClassName方法,这个方法用来选择元素,比通过 name属性选择要快得多

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

这就是 CSS 的方式,我几乎可以肯定它会在 jQuery 中工作。