次のコードを使用して、クリックされたすべてのリンクをサーバーにアクセスする代わりにバックボーン ルーターに転送しています。
$(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;
しかし、私がやろうとしていることを達成するためのより良い方法があるかどうか疑問に思っていますか?