开发者问题收集

点击 div 时触发锚点点击

2018-11-16
1002

我有 div 元素,如果单击了 div,我想在内部 <a></a> 标记上触发单击事件。我需要这样做,因为锚标记的单击函数上有验证函数,而它们不是由我呈现的。

这是我的实现方法:

$('.wrapperDiv').on('click', function(e) {
    e.stopPropagation();
    $(e.currentTarget).find('.link').trigger('click');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
  <li>
    <div class="wrapperDiv">
      <a class="link" href="https://google.com/" target="_self">Test A</a>
    </div>

  </li>
  <li>
    <div class="wrapperDiv">
      <a class="link" href="https://bing.com/" target="_blank">Test B</a>
    </div>
  </li>
</ul>

为什么我会收到 Uncaught RangeError:超出最大调用堆栈大小,我该如何修复此问题?

超出最大调用堆栈大小

2个回答

尝试在 e.stopPropagation(); 后添加 e.preventDefault();

eXcalibur
2018-11-16

stopPropagation() 仅阻止触发父元素点击,只需对 div 点击执行此操作:

$('.wrapperDiv').on('click', function(e) {
    e.stopPropagation();
    var link = $(e.currentTarget).find('.link')
    var win = window.open(link.attr('href'), link.attr('target'));
    win.focus();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
  <li>
    <div class="wrapperDiv">
      <a class="link" href="https://google.com/" target="_self">Test A</a>
    </div>

  </li>
  <li>
    <div class="wrapperDiv">
      <a class="link" href="https://bing.com/" target="_blank">Test B</a>
    </div>
  </li>
</ul>
Govind Samrow
2018-11-16