1

在我的 mvc 应用程序中,我将相同的功能绑定到这两个单选按钮。

$('#Fra').bind('change', function () {
    f_GC();
});

$('#Hea').bind('change', function () {
    f_GC();        
});

这几行的工作方式是 Fra 有 2 个具有相同名称/ID 的单选按钮(不同的值)。并且 Hea 有 4 个单选按钮(不同的值)具有相同的名称/ID...

我的理解是所有属于 Fra, / Hea 的 ID 都会绑定到函数......

这些工作时间最长,我必须更改一些代码.. 但是要让所有 6 个单选按钮运行这些功能,我现在必须像这样绑定它们..

$('input:radio[name=Fra][value=' + 1 + ']').bind('change', function () {
    f_GC();  
});
$('input:radio[name=Fra][value=' + 2 + ']').bind('change', function () {
    f_GC();  
});
$('input:radio[name=Hea][value=' + 1 + ']').bind('change', function () {
    f_GC();  
});
$('input:radio[name=Hea][value=' + 2 + ']').bind('change', function () {
    f_GC();  
});
$('input:radio[name=Hea][value=' + 3 + ']').bind('change', function () {
    f_GC();  
});
$('input:radio[name=Hea][value=' + 4 + ']').bind('change', function () {
    f_GC();  
});

这种行为有简单的解释吗? chrome 调试工具在 2 个配置中都没有显示 JS 错误。

4

2 回答 2

1

尝试按名称更新所有字段很简单。

$('input:radio[name=Hea]').on('change', function () {
    f_GC();
});

可能有很多不同的方法可以做到这一点,但这一种会起作用:)

希望这可以帮助。

于 2013-11-05T18:20:54.587 回答
0

关于 ID 选择器的 jQuery 文档说:“每个 id 值在文档中只能使用一次。如果为多个元素分配了相同的 ID,则使用该 ID 的查询将只选择 DOM 中的第一个匹配元素。”

如果您不想更改 ID,则另一种解决方案是将事件监听器添加到列表的父元素并使用“委托”样式的事件附件。然后在事件处理程序中,您可以查询触发事件的元素的 ID 并采取相应措施。

于 2013-11-05T16:17:40.740 回答