Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.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 click函数一行执行两次_Javascript_Jquery_Html_Onclick_Alert - Fatal编程技术网

Javascript click函数一行执行两次

Javascript click函数一行执行两次,javascript,jquery,html,onclick,alert,Javascript,Jquery,Html,Onclick,Alert,我正在使用jQuery编写我的第一个程序,但我遇到了一个问题。我在pageLoad上弹出了一个对话框,要求用户选择日期和轮次。现在,出于调试目的,我每次都让它发出警报。click()执行,出于某种原因,它似乎在用户单击之前和之后立即执行 有三个单选按钮,分别为1、2和3。当用户单击回合1时,警报应显示“1”。当用户单击Turn 2时,警报应显示为“2”,以此类推。但由于某些原因,它会提醒以前的值以及新值。我搜索了我所有的代码,但只有一个警报,所以我无法两次找出调用click()的原因。我已经在I

我正在使用jQuery编写我的第一个程序,但我遇到了一个问题。我在pageLoad上弹出了一个对话框,要求用户选择日期和轮次。现在,出于调试目的,我每次都让它发出警报。click()执行,出于某种原因,它似乎在用户单击之前和之后立即执行

有三个单选按钮,分别为1、2和3。当用户单击回合1时,警报应显示“1”。当用户单击Turn 2时,警报应显示为“2”,以此类推。但由于某些原因,它会提醒以前的值以及新值。我搜索了我所有的代码,但只有一个警报,所以我无法两次找出调用click()的原因。我已经在IE和Chrome中进行了测试,两次都是这样

这是我的.click()函数:

$("#turn-radio")
    .click(function () {
    turnvalue = $("input[name='turn-radio']:checked").val();
    alert(turnvalue);
});
如果您检查这个,您将看到我的代码的其余部分,这将有助于更容易地找出我的问题是什么


谢谢

您需要更改
选择器:
,因为您的单选按钮ID不同,并且您是以
选择器的身份命名的,这就是您面临该问题的原因:

 $("input[name='turn-radio']")
        .click(function () {
        turnvalue = $("input[name='turn-radio']:checked").val();
        alert(turnvalue);
    });

您需要更改
选择器:
,因为您的单选按钮ID不同,并且您以
选择器的身份命名,这就是您面临该问题的原因:

 $("input[name='turn-radio']")
        .click(function () {
        turnvalue = $("input[name='turn-radio']:checked").val();
        alert(turnvalue);
    });
改变

$("#turn-radio") to $("#turn-radio label") 
仅导致一个弹出窗口显示上一个值

但是,就我个人而言,我会的

$("#turn-radio input").change( function() { /* do stuff */ } )
改变

$("#turn-radio") to $("#turn-radio label") 
仅导致一个弹出窗口显示上一个值

但是,就我个人而言,我会的

$("#turn-radio input").change( function() { /* do stuff */ } )

那完全成功了!非常感谢。:)那完全成功了!非常感谢。:)杰出的你能解释一下为什么它会这样做吗?因为点击事件是从最里面的元素传播的,在你的代码中,它是两个重叠的元素,一个标签和一个无线电输入。您将从两个都被单击的子元素中调用一个单击事件。:)啊,所以是标签导致了第二次。click()执行?这是有道理的。我不知道是什么促使我给他们起了相同的名字。我的标签无论如何都不会改变,所以它甚至不需要名字。过度杀戮从来都不是一件坏事,只要过程的每一部分都是针对具体需求的。另一个可能引入的错误是,弹出窗口将显示在您在容器div中单击的任何位置,而不是我假设您希望的那样,显示在更改输入的单击上。很高兴我能帮上忙!你还需要什么?哇,太好了。非常感谢你的帮助。我实际上有另一个相关的问题,但我会形成一个新的问题,并张贴在这里的链接。你能解释一下为什么它会这样做吗?因为点击事件是从最里面的元素传播的,在你的代码中,它是两个重叠的元素,一个标签和一个无线电输入。您将从两个都被单击的子元素中调用一个单击事件。:)啊,所以是标签导致了第二次。click()执行?这是有道理的。我不知道是什么促使我给他们起了相同的名字。我的标签无论如何都不会改变,所以它甚至不需要名字。过度杀戮从来都不是一件坏事,只要过程的每一部分都是针对具体需求的。另一个可能引入的错误是,弹出窗口将显示在您在容器div中单击的任何位置,而不是我假设您希望的那样,显示在更改输入的单击上。很高兴我能帮上忙!你还需要什么?哇,太好了。非常感谢你的帮助。我实际上有另一个相关的问题,但我会形成一个新的问题,并张贴在这里的链接