它应该在没有被触发的情况下触发jQuery单选按钮更改功能

时间:2011-11-09 11:19:52

标签: radio-button jquery eventtrigger

我的jQuery Change功能有问题:

<input type="radio" name="words" value="8" checked><span class="word">word1</span>
<input type="radio" name="words" value="6"><span class="word">word2</span>

$("input[@name='words']:checked").change(function(){
    alert("test");
});

问题是当我单击默认选中的第一个选项(值= 8)时,才会触发事件。

如何在点击任何其他选项时触发事件?

请注意:我在Chrome和Firefox上都尝试了上述功能,但我遇到了同样的问题。

谢谢!

6 个答案:

答案 0 :(得分:4)

应为$("input[name='words']").change(function(){

答案 1 :(得分:1)

您只将事件处理程序绑定到:checked元素。因此,当第一个input具有checked属性集时,这是唯一接收事件处理程序的属性。删除:checked,它应该可以正常工作:

$("input[name='words']").change(function(){
    alert("test");
});

这是一个working example。请注意,我还从选择器中删除了@字符。你不需要它,因为像jQuery 1.2或类似的东西。

答案 2 :(得分:1)

$("input[@name='words']:checked").change(function(){
    alert("test");
});

您只对已选中的单选按钮(:checked)订阅了更改功能。从选择器中删除它。

$("input[name='words']").change(function(){
    alert("test");
});

代码:http://jsfiddle.net/DRasw/1/

答案 3 :(得分:1)

$("input[@name='words']:checked").change(function(){

找到名称为input的所有words元素(实际上,它不起作用:自jQuery 1.3以来已删除XPath样式的@属性选择器)检查并将事件处理程序绑定到它们。如果在进行选择时未检查元素,则不会将事件处理程序绑定到它们。

最简单的解决方案是绑定到所有相关元素,并且只有在取消选中时才会触发代码:

$('input[name="words"]').change(function() {
    if (!this.checked) { // checkbox was checked, now is not
        alert('unchecked');
    }
});

答案 4 :(得分:1)

  1. 提供单选按钮的id属性
  2. 在第二个redio按钮上添加OnClick =“CheckClick()”的属性。
  3. 在jquery中CheckClick()函数

    if($('#rb2')。attr('checked')){     警报('rb2 test'); }

答案 5 :(得分:1)

working link

  $("input[name='words']").change(function(){
alert("test");
 });