1

我对这个 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 上都尝试过上述功能,但我遇到了同样的问题。

谢谢!

4

6 回答 6

4

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

于 2011-11-09T11:24:28.327 回答
1

您只是将事件处理程序绑定到:checked元素。因此,由于第一个设置inputchecked属性,所以它是唯一接收事件处理程序的。删除:checked它应该可以正常工作:

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

这是一个工作示例。请注意,我还@从您的选择器中删除了该字符。自从像 jQuery 1.2 或类似的东西以来,你就不需要它了。

于 2011-11-09T11:22:43.893 回答
1
$("input[@name='words']:checked").change(function(){
    alert("test");
});

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

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

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

于 2011-11-09T11:22:51.147 回答
1
$("input[@name='words']:checked").change(function(){

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

最简单的解决方案是绑定到所有相关元素,并且仅在未选中它们时触发代码:

$('input[name="words"]').change(function() {
    if (!this.checked) { // checkbox was checked, now is not
        alert('unchecked');
    }
});
于 2011-11-09T11:23:57.260 回答
1
  1. 给出单选按钮的 id 属性
  2. 在第二个重播按钮上添加 OnClick="CheckClick()" 的属性。
  3. 在 jquery CheckClick() 函数中

    if ($('#rb2').attr('checked')) { alert('rb2 test'); }

于 2011-11-09T11:29:37.337 回答
1

工作链接

  $("input[name='words']").change(function(){
alert("test");
 });
于 2011-11-09T11:30:44.840 回答