如何在Javascript中单击子元素时覆盖父事件侦听器?

问题描述 投票:1回答:1

如何覆盖aFunction中的child.js

我希望子事件监听器在没有aFunction触发的情况下触发,我无法修改parent.js

这甚至可能吗?

index.html的:

       <th class="foo">foo &nbsp;&nbsp;

            <span class="bar" data-feather="arrow-down"></span>

        </th>

parent.js:

       parent = {
            init: function() {
                parent.aFunction($('.foo'));
            },
            aFunction: function(element) {
                element.on('click', function() {
                    alert('foo');
                });
            }, ...

         window.onload = parent.init;

child.js:

    $('.bar').on('click', function() {
      alert('bar');
    });
javascript jquery override
1个回答
2
投票
  • 首先它的.bar没有导致名为bar的html标签
  • event.stopPropagation()防止事件冒泡DOM树,防止任何父处理程序被通知事件。

$('.foo').on('click', function() {
  alert('foo');
});
$('.bar').on('click', function(e) {
  e.stopPropagation();
  alert('bar');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="foo">foo &nbsp;&nbsp;
    <span class="bar" data-feather="arrow-down">Bar</span>
</div>
© www.soinside.com 2019 - 2024. All rights reserved.