进行AJAX调用时禁用链接操作

时间:2016-02-15 23:17:40

标签: jquery ajax

我有一个调用控制器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()

1 个答案:

答案 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.
});