我有两个单选按钮,当我选择一个单选按钮(例如:id =一个)时,单击按钮将显示警报(“一个”)。 这是我的代码
<input type="radio" name="test" value="one" id="one">one
<input type="radio" name="test" value="two" id="two">two
<button id="click">Click</button>
和我的JS
$("#click").click(function(){
if($('input[type="radio"]').attr('id') == 'one'){
alert ("one")
} else{
alert("two")
}
})
我的问题是为什么警报二不显示?有什么身体帮助吗?谢谢 http://jsfiddle.net/dedi_wibisono17/gydrw291/10/
答案 0 :(得分:2)
请参见.attr
上的the docs:
.attr()方法仅获取匹配集中第一个元素的属性值。要单独获取每个元素的值,请使用循环结构...
因为您的选择器
input[type="radio"]
将始终返回前面包含#one
元素的集合,您的if
语句将始终求值为true
。
要解决此问题,请让您的选择器字符串仅选择选定的单选按钮-因此,也请使用:checked
伪选择器:
$("#click").click(function() {
if ($('input[type="radio"]:checked').attr('id') == 'one') {
alert("one")
} else {
alert("two")
}
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="radio" name="test" value="one" id="one">one
<input type="radio" name="test" value="two" id="two">two
<button id="click">Click</button>