0

我正在使用以下代码将所有点击的链接转移到 Backbone 路由器,而不是访问服务器:

$(document).delegate("a:not([data-bypass])", "click", function(evt) {
                var href = $(this).attr("href");
                var protocol = this.protocol + "//";

                if (href && href.slice(0, protocol.length) !== protocol &&
                href.indexOf("javascript:") !== 0) {
                    evt.preventDefault();

                    Backbone.history.navigate(href, true);
                }
            });

它运行良好,但在尝试使用“preventDefault”时会导致问题,例如:

onCancel: function(e){
   e.preventDefault();
   this.hide();
}

此处的 preventDefault 函数被忽略,Backbone 正在跟踪链接。我设法通过将以下代码行添加到顶部函数来解决此问题:

if(evt.isDefaultPrevented())
   return false;

但我想知道是否有更好的方法来完成我想做的事情?

4

0 回答 0