10

次のようなリンクで始まるBackbone.jsアクションがたくさんあります

<a href="#makeCookies">Make Cookies</a>

および Backbone.View イベント ハッシュは次のようになります。

'click [href=#makeCookies]': 'makeCookies'

そして、次のようなイベントハンドラー関数

makeCookies: function (event) {
    event.preventDefault();
    //code to make cookies
    //I have no intention of ever using #makeCookies in the URL,
    //it's just there so I can wire up the event handler properly
}

そのボイラープレートを避けるためのきれいな方法はありますかevent.preventDefault()? <button>タグの代わりにタグを使用することも考えまし<a>たが、それは不適切でした。

4

2 に答える 2

10

とにかく破棄するつもりなら、なぜ href 属性が必要なのですか? クラス名だけを使用するのはどうですか?

HTML コード:

<a class="makeCookies">Make Cookies</a>

コードを表示:

'click .makeCookies': 'makeCookies'
...
makeCookies: function (event) {
    // No need for event.preventDefault() anymore!
}
于 2012-12-19T20:06:15.930 に答える
-1

prevent-default ハンドラをドキュメント要素に追加できます。そのようです:

$(document).click(function (e) {
    if (e.target.tagName === "A") {
        e.preventDefault();
    }  
})

もちろん、これにより a-tags によって開始されたすべてのナビゲーションが無効になりますが、アプリがそのためのカスタム処理を提供している場合、問題にはなりません。

一部の a-tag を「通過」させたい場合は、href 属性の値が「#」で始まるかどうかを確認するなど、prevent-default ハンドラにさらに条件を追加できます。

于 2012-12-19T02:16:04.393 に答える