我有以下HTML代码,其中有两个元素具有相同的名称
<input type="hidden" name= "chk0" value="">
<input type="checkbox" name="chk0" value="true" disabled>
我想通过 JQuery 启用复选框,所以我正在使用类似于以下的代码:
$('#chk0').attr("disabled",false);
但这并不起作用。 我认为JQuery会混淆两个具有完全相同名称的元素。不幸的是,我不能避免使用两个不同的名称,因为当表单被提交时,我希望所有复选框都被提交(而不仅仅是选中的),因此我必须使用具有相同名称的隐藏元素。 因此,回到问题上,如何在上述情况下通过JQuery启用复选框? attr是否有“type”参数来区分隐藏和复选框?
谢谢
attr
方法设置JS属性而不是HTML属性(除了在一些特殊情况下的权宜之计;它会将HTML属性名转换为JS属性名,但这并不意味着它正在使用属性访问)。attr('disabled', 'disabled')
仅起作用是因为字符串'disabled'
是真值; 当你将它赋给布尔属性disabled
时,它就像true
一样。但是对于'banana'
和任何其他非空字符串也是如此。 - bobinceattr('disabled',true)
没有起作用 -- 你认为它应该起作用。有什么想法吗? - Hogan$("input:checkbox[name='chk0']")[0].disabled = false;
更好(更快,更清晰,更简单,而且有效)。@gaby - 在这里处理属性是不必要和不可取的,几乎在浏览器脚本编程中也是如此。我建议不使用jQuery的attr()
和相关方法,因为正如@bobince所指出的那样,名称是误导性的,并且实现很容易混淆。没有任何阻止您将DOM调用与jQuery混合使用:请参见我在此评论中早期提供的示例。 - Tim Down