我有这个问题只发生在IE8中。它适用于所有最新的浏览器IE10,Chrome 30,FireFox 24
以下是问题: 我在选择器上设置了一个click事件,但它也在其他元素上触发了
这是剧本:
$('#side-nav .nav-node-branch > a').click(function (eevent) {
var el = $(eevent.target);
if (el.is('#side-nav .nav-node-branch > a'))
// all is well
else
// sometimes arrives here, HOW???
}
以下是简化的HTML结构:
<html><body>
<nav id="side-nav">
//
<ul>
<li class="nav-node-branch"><a href="http://google.com">link</a></li>
</ul>
</nav>
<div class="content-area">
<form data-bind="submit: submitSearch" class="indented" novalidate="novalidate">
<fieldset>
<legend>Bestellung für</legend>
<ul>
<li>
<span>
<input checked="checked" data-bind="checked: IsEmployeeSelf" data-val="true" data-val-required="The IsEmployeeSelf field is required." id="IsEmployeeSelfYes" name="IsEmployeeSelf" type="radio" value="true">
<label for="IsEmployeeSelfYes">Eigene Person</label>
<input data-bind="checked: IsEmployeeSelf" id="IsEmployeeSelfNo" name="IsEmployeeSelf" type="radio" value="false">
<label for="IsEmployeeSelfNo">Andere Person</label>
</span>
</li>
</ul>
</fieldset>
</form>
</div>
</body></html>
单击表单内的ANYTHING时会触发上面的处理程序。甚至是传说或只是表格中的背景。 即使它只应触发资产净值中的元素。导航没有重叠或任何东西。
BTW:我正在调用document.createElement('nav');较早
关闭Knockout似乎可以解决问题.... 但整个事情是围绕淘汰赛。所以这不是一个真正的选择。 根据{{3}},它应该得到支持。 (淘汰赛3有同样的问题)
以下是我正在使用的库列表:
答案 0 :(得分:0)
我想我发现了这个问题。 使用RequireJS将这个小脚本移到库中后解决了所有问题:
$('input').keypress(function (e) {
// If the key pressed was enter
if (e.which == '13') {
$(this).closest('form').submit();
}
});
我认为这个剧本没有任何问题。我的理论如下:
我使用requireJS加载我的所有库。然而,上面的这个小脚本没有RequireJS加载。我的猜测是,我在两个不同的jQuery实例上运行。但每个访问相同的jQuery Cache,反过来在某些元素上触发看似随机的处理程序。
我现在确保所有jQuery访问都是通过RequireJS进行的,这似乎可以解决我的问题。