jquery 如何删除当前点击的地域?

ds97pgxw  于 2023-08-04  发布在  jQuery
关注(0)|答案(2)|浏览(101)

我有以下代码,其中包含一个链接,应该删除它所属的区域:

<a href="javascript:function() { $(this).closest(".DatesSelection").remove(); };">
  <div class="CloseButton">
    Close
  </div>
</a>

字符串
生成按钮,但当我单击它时,出现错误:
未捕获的语法错误:意外的令牌(
我该怎么解决呢?

ercv8c1e

ercv8c1e1#

问题是由于href属性中的函数定义和引号的使用。要解决这个问题,请删除逻辑周围的function(),使用onclick作为内联处理程序,并使用单独的引号来分隔attribute值和选择器字符串:

<a href="#" onclick="$(this).closest('.DatesSelection').remove();">

字符串

  • 然而,*,一个更好的方法是使用不显眼的事件处理程序,而不是将内联JS代码塞进href(它永远不应该在那里)或on*事件属性(现在已经严重过时),就像这样:
$(function() {
  $('.DatesSelection a').click(function(e) {
    e.preventDefault();
    $(this).closest(".DatesSelection").remove();
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="DatesSelection">
  <a href="#">
    <div class="CloseButton">
      Close
    </div>
  </a>
</div>
<div class="DatesSelection">
  <a href="#">
    <div class="CloseButton">
      Close
    </div>
  </a>
</div>
<div class="DatesSelection">
  <a href="#">
    <div class="CloseButton">
      Close
    </div>
  </a>
</div>

的数据

vc9ivgsu

vc9ivgsu2#

另一种选择是使用事件委托,在某个父容器上设置click事件侦听器,并检查事件的源是否是相应的锚点。

  • event.target.tagName === 'A'检查事件是否由a元素触发
  • event.target.parentNode.className === 'DatesSelection'检查触发事件的元素的父元素是否具有类DatesSelection
  • 如果两个条件都满足,则删除触发事件的父元素
document.body.addEventListener('click', event => {
  if (event.target.tagName === 'A' && event.target.parentNode.className === 'DatesSelection') {
    event.preventDefault();
    event.target.parentNode.remove();
  }
});

个字符

相关问题