1

在我的 Backbone 应用程序中,我有一个空白的根路由。在我的一些视图中,我有在视图对象<a>中注册的 UI 元素的标签。events为了正确形成标记,我需要href='#'在这些锚点中拥有,但我不希望它们进入我的应用程序的根目录。

似乎对于<a>我不想去根的所有 s,我必须总是调用evt.preventDefault(). 我想确认一下,看看是否有其他/更好的选择。

我知道我可以做一个<div>or <span>withcursor: pointer但我的直觉告诉我我希望这些在语义上成为锚。

4

2 回答 2

3

你有三个选择:

  • 总是false在处理程序中返回或调用preventDefault事件
  • 使用href="javascript:void(0)"(这伤害了我的眼睛)
  • 在您不想导航的链接上放置某种特殊的类或数据属性,并创建一些始终阻止导航的通用处理程序
  • <button>每当您现在与<a>假人一起使用时使用href

在我看来,最后一个选项是最好的,因为很明显,这些 GUI 元素对您当前显示的内容执行一些“本地”操作,而链接(或者更确切地说:它们链接到的 URI)是设计使然代表不同的资源(和内容)。

于 2013-06-17T21:11:01.857 回答
0

I had to do this recently to an existing project, so I'd like to provide a conditional alternative to the selected answer... Depending on the complexity of the project in question, there is another option that could in my opinion be more efficient.

Quite simply:

  • Make it possible to target all applicable links:

    Example: add class="no-link" to all relevant <a> elements.

  • Disable typical link functionality by targeting the appropriate CSS selector.

    Example: apply the usual e.preventDefault() override to elements matching $('a[href="#"].no-link')

JS Bin example.

That said, most often simpler is better.. If you don't need to add a custom class to numerous links on a page, then don't. :) Also be very careful when using this, having insufficiently specific jQuery selectors could result in some links being disabled when you don't expect them to be.

于 2014-01-18T12:01:35.270 回答