我是Jquery的新手,我正在尝试使用attr()获取复选框的值。但是警告框中的结果显示" undefined"。有人解释为什么会发生这种情况?
$("#checkbox").click(function() {
alert($("checkbox").attr("value"));
})

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" name="checkbox" id="checkbox" value="UK">UK
<input type="checkbox" name="checkbox" id="checkbox" value="US">USA
<input type="checkbox" name="checkbox" id="checkbox" value="Rus">Russia
<div id="result"></div>
&#13;
答案 0 :(得分:5)
这里有几个问题:
$('checkbox')
不是有效的选择器,因为它正在搜索不存在的<checkbox />
元素。您可以改为选择元素,例如[name="checkbox"]
或使用:checkbox
选择器。val()
方法获取表单输入的值,而不是attr('value')
id
的元素无效。 id
在DOM中必须是唯一的。如果要对公共元素进行分组,请使用类。change
事件,因为它更易于访问(即,它仍适用于仅通过键盘导航网络的用户)this
关键字来获取引发事件的元素的引用。 考虑到这些问题,这应该对你有用:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" name="checkbox" value="UK">UK
<input type="checkbox" name="checkbox" value="US">USA
<input type="checkbox" name="checkbox" value="Rus">Russia
<div id="result"></div>
<script>
$(":checkbox").change(function() {
console.log($(this).val());
})
</script>
&#13;
答案 1 :(得分:4)
ID应该是唯一的,因此在这种情况下不要使用它们。但是例如您可以选中所有复选框:
$("input[type=checkbox]").click(function() {
alert($(this).attr("value"));
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" name="checkbox" id="checkbox" value="UK">UK
<input type="checkbox" name="checkbox" id="checkbox" value="US">USA
<input type="checkbox" name="checkbox" id="checkbox" value="Rus">Russia
<div id="result"></div>
&#13;
我还更改了警报内部,因为click
将this
值设置为受影响的元素。
答案 2 :(得分:3)
问题是$("checkbox")
没有选择任何内容。如果您将该行更改为$('#checkbox')
,则您的代码将适用于第一个复选框。此外,HTML中的ID应该是唯一的。如果您将ID更改为类并将查询更改为$('.checkbox')
,则可以使用任何复选框发出警报。
$(".checkbox").click(function() {
alert($(this).attr("value"));
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" name="checkbox" class="checkbox" value="UK">UK
<input type="checkbox" name="checkbox" class="checkbox" value="US">USA
<input type="checkbox" name="checkbox" class="checkbox" value="Rus">Russia
<div id="result"></div>
&#13;
答案 3 :(得分:1)
您可以使用input[type='checkbox']
获取所有复选框输入,而不是尝试通过其ID获取它们。
$("input[type='checkbox']").click(function() {
console.log($(this).val());
;
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="checkbox" name="checkbox" id="checkbox" value="UK">UK
<input type="checkbox" name="checkbox" id="checkbox" value="US">USA
<input type="checkbox" name="checkbox" id="checkbox" value="Rus">Russia
<div id="result"></div>
&#13;