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

JZ.*_*JZ. 6 jquery events ruby-on-rails preventdefault

我在使用的麻烦event.preventDefault();ahref我的DOM.

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

<td class="trash_can">
<a rel="nofollow" data-remote="true" data-method="delete" data-confirm="Are you sure you want to delete Greek Theater at U.C. Berkeley?" href="/promotions/2/places/46">
<img id="trash_can" src="http://test.dev/images/trash.png?1305741883" alt="Trash">
Run Code Online (Sandbox Code Playgroud)

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

  $(function(){
  $('.trash_can a').click(function(event) {
    event.preventDefault();
    console.log('Clicked Delete');
  });
});
Run Code Online (Sandbox Code Playgroud)

slo*_*ife 7

有可能不仅仅是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;
    }
  });
Run Code Online (Sandbox Code Playgroud)


Fre*_*rik 5

你在用导轨吗?看起来像。

之所以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]'
Run Code Online (Sandbox Code Playgroud)

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

所以我建议你删除它们,然后在你自己的点击处理程序中重新创建你想要的任何行为。