【发布时间】:2012-12-19 00:52:17
【问题描述】:
我有很多以链接开头的 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> 标签,但这似乎不合适。
【问题讨论】:
-
我实际上认为
<button>比<a>更适合您可以按下但不会自然地将您带到单独页面的任何内容:如果按下某个东西不会更改URL那么那个东西根本就不是<a>。<button>还具有拥有disabled属性的巨大优势。只要确保你说<button type="button">以避免不同的浏览器假定type属性的默认值不同。 -
+1 按钮的使用
-
我猜这可能是要走的路。我的 2.5 烦恼是
<button type="button" class="makeCookies">几乎与event.preventDefault()一样多的样板,然后如果我希望它只是一个文本链接,我必须将其设置为与默认样式相反的样式。人们对使用<span class="makeCookies">Make Cookies</span>有何看法? -
使用
<a>s 的想法是爬虫可以在解析您的页面时遵循hrefs,即使他们不“说”javascript。当然,如果您的应用程序不是公开的,或者您没有采取措施(例如服务器端渲染)将渲染的页面首先交付给爬虫,那么真的没有理由坚持<a>s。 -
好吧,导航到其他资源的链接可以有 href 并在浏览器中运行时执行 preventDefault 操作,但对爬虫仍然有用,但“登录”链接不会更改 URL并且只是弹出一个登录对话框不需要href。
标签: javascript-events backbone.js