我有以下代码,其中的链接应删除它所属的区域:
<a href="javascript:function() { $(this).closest(".DatesSelection").remove(); };">
<div class="CloseButton">
Close
</div>
</a>
按钮生成但是当我点击它时,我有错误:
Uncaught SyntaxError:意外的令牌(
有人可以帮忙吗? 欢呼声,
答案 0 :(得分:3)
问题是由href
属性中的函数定义和引号的使用引起的。要解决此问题,请删除逻辑周围的function()
,使用onclick
作为内联处理程序,并使用单独的引号来分隔atttribute值和选择器字符串:
<a href="#" onclick="$(this).closest('.DatesSelection').remove();">
然而 ,一个更好的方法完全是使用不显眼的事件处理程序,而不是将内联JS代码填充到href
(它永远不应该)或on*
事件属性(现在大量过时),如下所示:
$(function() {
$('.DatesSelection a').click(function(e) {
e.preventDefault();
$(this).closest(".DatesSelection").remove();
});
});
&#13;
<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>
&#13;
答案 1 :(得分:0)
另一种选择是使用事件委托,在某个父容器上设置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();
}
});
&#13;
<div class="DatesSelection">
<a href="#"> Close </a>
</div>
<div class="DatesSelection">
<a href="#"> Close </a>
</div>
&#13;