我有一个调用控制器Restore()
的链接UNDO。
事情是我无法禁用调用控制器的链接。
因此,它会使用Json响应打开它,而不是停留在同一页面中。
这是我的代码:
链接:
<div class='row'>
<div class='col-lg-8'>" + data.msg + "</div>
<div class='col-lg-4' align='right'>
<a class='undo' href='"+ url+ '/' + dataId + "/restore' 'data-restore' =" + dataId +" >
<span class='undo_link'>UNDO</span> </a>
</div>
</div>
应该取消链接的AJAX调用:
$('.undo').click(function (e) {
e.preventDefault();
e.stopPropagation();
// ... All my ajax stuff.
}
任何想法为什么不尊重:e.preventDefault()
?
答案 0 :(得分:1)
此问题是因为您在preventDefault()
元素上调用span
,但后面的链接位于父a
元素上。这意味着您需要使用stopPropagation()
来停止在a
上触发的链接:
$('.undo_link').click(function(e) {
e.stopPropagation();
// All my ajax stuff.
});
或者通过将a
类放在该元素上来挂钩undo_link
本身的click事件:
<a href="' + url + '/' + dataId + '/restore" data-restore="' + dataId + '" class="undo_link">
UNDO
</a>
另请注意,如果在加载DOM后附加了元素,则需要使用委托事件处理程序:
$(document).on('click', '.undo_link', function(e) {
e.preventDefault();
// All my ajax stuff.
});