我的页面中有一些无线电,我想在检查的无线电更改时做一些事情,但是代码在IE中不起作用:
$('input:radio').change(...);
在谷歌搜索后,人们建议使用点击。但它不起作用。
这是示例代码:
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<script type="text/javascript">
$('document').ready(
function(){
$('input:radio').click(
function(){
alert('changed');
}
);
}
);
</script>
</head>
<body>
<input type="radio" name="testGroup" id="test1" />test1<br/>
<input type="radio" name="testGroup" id="test2" />test2<br/>
<input type="radio" name="testGroup" id="test3" />test3</br>
</body>
</html>
它在IE中也不起作用。
所以我想知道发生了什么事?
如果点击选中的收音机,我担心是否会重新触发更改事件?
更新:
我无法添加评论,所以我在这里回复。
我使用IE8和链接Furqan给我也在IE8中不起作用。我不知道为什么......
答案 0 :(得分:109)
此代码对我有用:
$(function(){
$('input:radio').change(function(){
alert('changed');
});
});
答案 1 :(得分:70)
您可以指定name属性,如下所示:
$( 'input[name="testGroup"]:radio' ).change(
答案 2 :(得分:13)
也适合我,这是一个更好的解决方案::
<form id="myForm">
<input type="radio" name="radioName" value="1" />one<br />
<input type="radio" name="radioName" value="2" />two
</form>
<script>
$('#myForm input[type=radio]').change(function() {
alert(this.value);
});
</script>
您必须确保在所有其他导入和javascript函数之上初始化jquery
。因为$
是jquery
函数。甚至
$(function(){
<code>
});
不会检查jquery
是否已初始化。它将确保<code>
仅在所有javascripts初始化后才会运行。
答案 3 :(得分:7)
尝试
$(document).ready(
而不是
$('document').ready(
或者您可以使用简写形式
$(function(){
});
答案 4 :(得分:0)
$( 'input[name="testGroup"]:radio' ).on('change', function(e) {
console.log(e.type);
return false;
});
这种语法可以更灵活地处理事件。您不仅可以观察到“更改”,而且还可以通过使用单个事件处理程序来控制其他类型的事件。您可以通过将事件列表作为参数传递给第一个参数来完成此操作。 See jQuery On
其次,.change()是.on(“更改”,处理程序)的快捷方式。 See here。我更喜欢使用.on()而不是.change,因为我可以更好地控制事件。
最后,我只是展示了将事件附加到元素的替代语法。