Javascript 为什么这两行jquery会取消另一个jquery元素的事件处理程序
我有一个用于元素w/ID=submitButton的jquery事件处理程序。代码运行良好——但是如果我单击另一个按钮w/ID=yeahTotallyButton,submitButton的jquery事件处理程序将停止工作。控制台中没有显示错误——但是#submitButton的处理程序停止触发。单击yeahTotallyButton后,调试器不会在submitButton的断点处停止 到目前为止,在调试过程中,我注意到,通过注释yeahTotallyButton事件处理程序中的两行(如下代码所示),即使在我单击yeahTotallyButton之后,submit按钮仍然有效。因此,这两行代码中的某些内容基本上破坏了submitButton处理程序。为什么会这样?我怎样才能解决这个问题?我需要做这两行代码在我的最终网站上所做的事情Javascript 为什么这两行jquery会取消另一个jquery元素的事件处理程序,javascript,jquery,web,Javascript,Jquery,Web,我有一个用于元素w/ID=submitButton的jquery事件处理程序。代码运行良好——但是如果我单击另一个按钮w/ID=yeahTotallyButton,submitButton的jquery事件处理程序将停止工作。控制台中没有显示错误——但是#submitButton的处理程序停止触发。单击yeahTotallyButton后,调试器不会在submitButton的断点处停止 到目前为止,在调试过程中,我注意到,通过注释yeahTotallyButton事件处理程序中的两行(如下代码
<body>
<div id='header'>
</div>
<div id='captchaPanel'>
<div id='top'>
<div id='fillerTop'>
</div>
<div id='captcha'>
<img id='captchaText' src='cryptographp.inc.php'> </img>
</div>
</div>
<div id='bottom'>
<div id='left'>
<p id='answerprompt'>Answer: </p>
<input id="answerBox" type="text" name="firstname">
</div>
<div id='right'>
<table id='buttonTable'>
<tr>
<td><img id='recycleButton' src="images/buttons_recycle.png" ></td>
</tr>
<tr>
<td><img src="images/buttons_audio.png" ></td>
</tr>
<tr>
<td><img src="images/buttons_question.png" ></td>
</tr>
</table>
<div id='logo'>
<img src="images/smallLogo.png">
</div>
</div>
<div id='introButtons'>
<button id='yeahTotallyButton' type="submit" class="button">Yeah, totally. I am cool person.</button>
<button id='imARobotButton' type="submit" class="button">No, I can't come. I'm a robot.</button>
</div>
</div>
</div>
<div id='submitDiv'>
<input id='submitButton' type="submit" class="button" value="Submit"/>
</div>
</body>
我的猜测是,不知何故,您最终会有多个id设置为
submitButton
的元素,并且您正在检查单击的按钮不是此列表中的第一个。例如,在这个场景中
<div id='submitDiv'>
<input id='submitButton' type="submit" class="button" value="Alert Submit" />
<input id='submitButton' type="submit" class="button" value="Alertless Submit" />
</div>
$('#submitButton').click(function() { alert(42); });
。但显然,这只会掩盖真正的问题:在任何情况下,DOM中都不会有多个具有特定ID的元素。yeahTotallyButton的处理程序将captchaPanel元素变大,因此它挂在submit按钮上,即使submitButton是可见的。因此,当您单击submitButton时,jQuery并没有以某种方式获取事件。仔细调整catpchaPanel的大小解决了这个问题。您需要关闭
输入
标记(在关闭括号前添加/
)@BenPearlKahan从HTML5开始,它实际上不起作用matter@BenPearlKahan我做了那个改变,但还是一样problem@abe3最好提供指向页面或JSFIDLE的链接。
<div id='submitDiv'>
<input id='submitButton' type="submit" class="button" value="Alert Submit" />
<input id='submitButton' type="submit" class="button" value="Alertless Submit" />
</div>
$('#submitButton').click(function() { alert(42); });
$('[id=submitButton]').click(function() { ... });