在所有浏览器上,Jquery中的Event.preventDefault()失败

时间:2011-01-20 19:05:45

标签: jquery

简单的问题。我有以下HTML:

<a  rel="nofollow" id="claim-job-link" data-method="post" class="button green claim-job" href=""><span class="button"> <span class="text"> Claim Job </span> </span></a>

以下Jquery:

 $("#claim-job-link").bind('click', function(event) {
               event.preventDefault();
    });

被称为没有问题。在preventDefault中添加断点表明它已被调用。但是,浏览器仍然在Chrome和Firefox中重定向。有人遇到过类似的事吗?


已编辑添加

看起来事件首先被阻止,然后jquery进入这个代码块:

 for ( i = 0, l = elems.length; i < l; i++ ) {
        match = elems[i];

        if ( maxLevel && match.level > maxLevel ) {
            break;
        }

        event.currentTarget = match.elem;
        event.data = match.handleObj.data;
        event.handleObj = match.handleObj;

        ret = match.handleObj.origHandler.apply( match.elem, arguments );

        if ( ret === false || event.isPropagationStopped() ) {
            maxLevel = match.level;

            if ( ret === false ) {
                stop = false;
            }
            if ( event.isImmediatePropagationStopped() ) {
                break;
            }
        }
    }

    return stop;
}

然后当它退出时,它会运行重定向调用。

由于

3 个答案:

答案 0 :(得分:1)

对我来说很好。 http://jsbin.com/ateje4/edit必定会有其他事情发生。我会从你的页面创建一个减少量来追踪它。

答案 1 :(得分:1)

注意:bind是附加的。试试这个:

$("#claim-job-link").unbind('click').bind('click', function(event) {
    event.preventDefault();
});

答案 2 :(得分:1)

感谢您的帮助。我想通了。在rails应用程序中,当您调用:remote =&gt; true或:method =&gt;:xxx时,它会向链接添加标记。 rails应用程序处理此标记,使event.preventDefault调用不起作用。通过删除:method属性,调用现在可以正常工作。去搞清楚。再次感谢您的帮助。