.preventDefault()方法不能与.on()一起使用

时间:2014-03-01 17:49:00

标签: javascript jquery

我正在尝试阻止点击这样的锚元素的默认行为:

<a class="btn btn-default start-match" data-call="start" href="/matches/256/start.json" data-method="patch" data-model="Match" rel="nofollow">
        <span class="glyphicon glyphicon-screenshot"></span> Iniziata
</a>

使用这样的javascript:

  $(document).on(
          'click',
          "a",
          function(event) {
            event.preventDefault();
            event.stopPropagation();
          }
  );

但此代码未阻止默认行为,并且遵循链接。为什么呢?

我的jquery版本是1.10,我正在使用turbolinks

3 个答案:

答案 0 :(得分:0)

据我所知,在锚标签中首先给予HREF然后onclick事件。所以默认情况下HREF url首先调用。

如果您不想调用锚点网址,则可以使用

替换HREF标记

<a href="javascript:;">....</a>

答案 1 :(得分:0)

似乎event.preventDefault()仅适用于jQuery 1.7

具有不同结果的相同JavaScript代码: $(document).ready(function(){

    $("a").on('click',

    function (event) {
        event.preventDefault();
        //event.stopPropagation();
    });

});

This使用jQuery 1.7.2和this与jQuery 1.7.2混合使用

答案 2 :(得分:-4)

我认为这样做的目的是在文档上调用'preventDefault',而实际上,你希望阻止'a'事件。这更有可能奏效:

$('a').on('click', function(e){
    e.preventDefault();
    e..stopPropagation();
    // rest of your stuff
});

如果按预期工作,可能甚至不需要'stopPropagation'