我需要将一些复选框输入更改为隐藏输入,而不是页面上的某些输入。
<input type="checkbox" name="ProductCode"value="396P4">
<input type="checkbox" name="ProductCode"value="401P4">
<input type="checkbox" name="ProductCode"value="F460129">
下面的jquery代码只选择按类型输入,这会导致所有复选框都更改为隐藏输入有没有办法检查输入类型=“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
});
答案 0 :(得分:266)
您需要 multiple attribute selector
$("input[type='checkbox'][name='ProductCode']").each(function(){ ...
或
$("input:checkbox[name='ProductCode']").each(function(){ ...
最好使用CSS类来识别您想要选择的那些,但是很多现代浏览器都会实现document.getElementsByClassName
方法,该方法将用于选择元素并且比选择方法快得多name
属性
答案 1 :(得分:21)
您可以通过以下方式组合属性选择器:
$("[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")...
答案 2 :(得分:6)
input[type='checkbox', name='ProductCode']
这是CSS方式,我几乎可以肯定它将在jQuery中运行。