Javascript 将脚本绑定到单选按钮:奇怪的行为:不按名称绑定
在我的mvc应用程序中,我将相同的函数绑定到这两个单选按钮Javascript 将脚本绑定到单选按钮:奇怪的行为:不按名称绑定,javascript,jquery,asp.net-mvc,Javascript,Jquery,Asp.net Mvc,在我的mvc应用程序中,我将相同的函数绑定到这两个单选按钮 $('#Fra').bind('change', function () { f_GC(); }); $('#Hea').bind('change', function () { f_GC(); }); 这几行的工作方式是Fra有两个单选按钮(不同的值)具有相同的名称/ID。Hea有4个单选按钮(不同的值)具有相同的名称/ID 我的理解是所有属于Fra的ID,/Hea将绑定到函数 这些工作时间最长,我
$('#Fra').bind('change', function () {
f_GC();
});
$('#Hea').bind('change', function () {
f_GC();
});
这几行的工作方式是Fra有两个单选按钮(不同的值)具有相同的名称/ID。Hea有4个单选按钮(不同的值)具有相同的名称/ID
我的理解是所有属于Fra的ID,/Hea将绑定到函数
这些工作时间最长,我必须改变一些代码。。。。然而,为了让所有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调试工具在两种配置中都没有显示JS错误。:
每个id值在文档中只能使用一次。如果有多个元素被分配了相同的id,则使用该id的查询将只选择DOM中第一个匹配的元素
如果您不想更改ID,那么另一个解决方案是将eventlistener添加到列表的父元素中,并使用“委托”样式的事件附件。然后,在事件处理程序中,您可以查询触发事件的元素的id并相应地执行操作。:
每个id值在文档中只能使用一次。如果有多个元素被分配了相同的id,则使用该id的查询将只选择DOM中第一个匹配的元素
如果您不想更改ID,那么另一个解决方案是将eventlistener添加到列表的父元素中,并使用“委托”样式的事件附件。然后,在事件处理程序中,您可以查询触发事件的元素的id并相应地执行操作。尝试按名称更新所有字段很简单
$('input:radio[name=Hea]').on('change', function () {
f_GC();
});
可能有许多不同的方法可以做到这一点,但这一种会奏效:)
希望这能有所帮助。试着用名称更新所有字段很简单
$('input:radio[name=Hea]').on('change', function () {
f_GC();
});
可能有许多不同的方法可以做到这一点,但这一种会奏效:)
希望这有帮助。ID在您的视图中应该是唯一的,那么改用类如何<代码>$('.Fra').bind('change',function(){f_GC();})代码>文档中不能有两个元素具有相同的ID,因此我建议您更改按钮的ID。另外,bind不再是首选方法,您可以改为使用on()。谢谢大家,我输入的是fast,我不会使用相同的ID,尽管我的所有控件都是如此,谢谢“on”的提示,我会仔细研究的。我不认为我需要浏览我的大视图并将所有收音机添加到一个类中,也许我们可以在所有单选按钮上使用相同的名称?@MartinVézina当然两个元素可以具有相同的ID,但在我看来,这并不是一个真正的最佳实践。来自w3c:该值在元素的主子树中的所有ID中必须是唯一的。当一个节点位于文档中时,它的主子树就是该文档的树。ID在视图中应该是唯一的,那么改用类呢<代码>$('.Fra').bind('change',function(){f_GC();})代码>文档中不能有两个元素具有相同的ID,因此我建议您更改按钮的ID。另外,bind不再是首选方法,您可以改为使用on()。谢谢大家,我输入的是fast,我不会使用相同的ID,尽管我的所有控件都是如此,谢谢“on”的提示,我会仔细研究的。我不认为我需要浏览我的大视图并将所有收音机添加到一个类中,也许我们可以在所有单选按钮上使用相同的名称?@MartinVézina当然两个元素可以具有相同的ID,但在我看来,这并不是一个真正的最佳实践。来自w3c:该值在元素的主子树中的所有ID中必须是唯一的。当节点位于文档中时,其主子树就是该文档的树。