jQuery - 将点击处理程序绑定到 div(不覆盖子处理程序)



我在这里找到了许多解决方案,如何防止孩子们在单击时运行指定的事件处理程序,但这里的问题是,他们仍然执行该处理程序,直到函数返回。这里有一些输入字段它们的原生点击处理程序没有执行,被覆盖了。所以输入文件字段不打开文件浏览器,但运行指定的事件处理程序到父div。似乎甚至谷歌不知道答案(或者我只是使用错误的关键字),你们知道任何解决方案吗?

下面是一些要测试的代码:http://jsfiddle.net/Mu58z/2/
<!DOCTYPE html><html><head></head><body>
  <div id="myContainer">
    <input type="file" />
    <input type="file" />
  </div>
<script type="text/javascript">
var count = 0;
var myEventHandler = function(e) {
e.stopPropagation();
e.preventDefault();
alert(++count + ' times fired');
}
// that variable is already set and I cannot find the element
var foo = $('#myContainer');
// try these, none of them works as intended
//foo.on('click', myEventHandler);
foo.filter(':not(input:file)').on('click', myEventHandler);
</script>
</body>
</html>

解决。当我单击输入按钮时,由于传播,它也触发了父节点的事件处理程序,解决方案非常简单。我从来没有重写过输入的事件处理程序。

http://jsfiddle.net/Mu58z/2/

$('input:file').on('click', function () { 
  e.stopPropagation();
}

相关内容

  • 没有找到相关文章

最新更新