Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将脚本绑定到单选按钮:奇怪的行为:不按名称绑定_Javascript_Jquery_Asp.net Mvc - Fatal编程技术网

Javascript 将脚本绑定到单选按钮:奇怪的行为:不按名称绑定

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将绑定到函数 这些工作时间最长,我

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

$('#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中必须是唯一的。当节点位于文档中时,其主子树就是该文档的树。