我正在使用以下代码将所有点击的链接转移到 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;
但我想知道是否有更好的方法来完成我想做的事情?