【发布时间】:2017-01-05 08:07:22
【问题描述】:
我为你制作了一个代码笔,让你看看行为不端的 IE11:
http://codepen.io/timkley/pen/rjamgP
基本设置是一个带有选择字段和按钮的表单。我想捕捉表单上的点击,并且只在未点击选择按钮时触发提交按钮。
<form class="form">
<select class="select">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<button class="button" type="submit">Hello</button>
</form>
还有 Javascript:
$(document).on('click', '.form', function(e) {
console.log($(e.target));
e.preventDefault();
});
基本上我所做的只是检查$(e.target).hasClass('select') 到return false。但这在 IE11 中不起作用,因为它不仅不返回 DOM 元素,而且还会触发 2 个单击事件。一个用于单击选择元素,一个用于选择选项。
如何确保两个浏览器的行为相同?
【问题讨论】:
-
似乎 XY 问题。你到底想达到什么目的?当您将 click 事件处理程序绑定到顶部元素时,子元素 click 将传播
-
您是否有理由监听整个表单的点击?
-
整个表单被设计成电子商务页面的按钮,因为它跨越了数量选择器的左侧和右侧。当点击此表单中的任何内容(数量选择器除外)时,应触发该按钮。
标签: jquery google-chrome internet-explorer-11