我在使用event.preventDefault()时遇到问题; 对于我的DOM上的ahref

我在使用event.preventDefault();遇到问题event.preventDefault(); 对于我的DOM上的ahref

如何防止url发布nofollow删除,如使用JQuery的HTML指定的那样?

   Trash 

以下代码应该颠覆HTML,但HTML会在发出“你确定”警告之前发布删除操作。 没有什么不起作用:

  $(function(){ $('.trash_can a').click(function(event) { event.preventDefault(); console.log('Clicked Delete'); }); }); 

有可能不仅仅是event.preventDefault() ,你还需要return false 。 preventDefault()阻止默认操作,但事件仍然冒泡,可能是下一个处理程序,可能是Fredrik指出的rails处理程序:

  $(rails.linkClickSelector).live('click.rails', function(e) { var link = $(this); if (!rails.allowAction(link)) return rails.stopEverything(e); if (link.data('remote') !== undefined) { rails.handleRemote(link); return false; } else if (link.data('method')) { rails.handleMethod(link); return false; } }); 

你在使用铁轨吗? 看起来像。

event.preventDefault()不起作用的原因是因为魔法在其他地方完成。 Rails附带了一些帮助程序,可以为Rails生成的所有“删除”操作创建事件处理程序。 因此,在您的情况下,我认为您需要了解如何覆盖帮助程序或仅为该特定删除操作创建自定义事件处理程序。

这是Rails使用的JQuery代码:

https://github.com/rails/jquery-ujs/blob/master/src/rails.js

基于此(来自链接):

 linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]' 

如果您从链接中删除data-remotedata-methoddata-confirm ,则您的事件处理程序将是唯一执行的处理程序。

因此,我建议您删除它们,然后在您自己的单击处理程序中重新创建您想要的任何行为。

我遇到了同样的问题,但在打了几个小时之后没能得到任何好的解决方案。 所以,基于这里建议的答案,我做了类似的事情:

 function enableLink() { jQuery("#link_id").removeClass("disabled"); jQuery("#link_id").attr("data-remote", true); } function disableLink() { jQuery("#link_id").addClass("disabled"); jQuery("#link_id").removeAttr("data-remote"); } jQuery(document).ready(function(){ jQuery(document).on("click", "disabled", function(e){ e.preventDefault(); }); }); 

我接受它不是一个好的解决方法。 但是,这对我有什么帮助。