Backbone.js 对于href='#';在主干/木偶视图中?

Backbone.js 对于href='#';在主干/木偶视图中?,backbone.js,anchor,marionette,preventdefault,Backbone.js,Anchor,Marionette,Preventdefault,在我的主干应用程序中,我有一个根路由,它是空白的。在我的一些视图中,我在视图的事件对象中注册了UI元素的标记。为了有正确格式的标记,我需要在这些锚中有href='#',但我不希望它们转到我的应用程序的根目录 似乎对于所有我不想进入根目录的s,我必须始终调用evt.preventDefault()。我想确认这一点,并了解是否有其他/更好的选择 我知道我可以用光标:指针制作或,但我的直觉告诉我,我希望这些在语义上成为锚。你有三个选择: 始终在处理程序中返回false,或对事件调用preventDe

在我的主干应用程序中,我有一个根路由,它是空白的。在我的一些视图中,我在视图的
事件
对象中注册了UI元素的
标记。为了有正确格式的标记,我需要在这些锚中有
href='#'
,但我不希望它们转到我的应用程序的根目录

似乎对于所有我不想进入根目录的
s,我必须始终调用
evt.preventDefault()
。我想确认这一点,并了解是否有其他/更好的选择


我知道我可以用
光标:指针
制作
,但我的直觉告诉我,我希望这些在语义上成为锚。

你有三个选择:

  • 始终在处理程序中返回
    false
    ,或对事件调用
    preventDefault
  • 使用
    href=“javascript:void(0)”
    (这会伤害我的眼睛)
  • 在不希望导航的链接上放置某种特殊的类或数据属性,并创建一些总是阻止导航的通用处理程序
  • 无论何时,只要您现在正在对虚拟
    href
    使用
    ,请使用

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

我最近不得不对一个现有项目这样做,因此,我想提供一个有条件的选择,以选择答案。。。根据所讨论项目的复杂性,我认为还有另一个更有效的选择

很简单:

  • 使其能够针对所有适用的链接:

    示例:将
    class=“无链接”
    添加到所有相关


    也就是说,通常越简单越好。。如果您不需要将自定义类添加到页面上的多个链接中,则不需要添加使用此选项时也要非常小心,如果jQuery选择器不够具体,可能会导致某些链接在您不希望的情况下被禁用。

    谢谢!我同意最后一个选择看起来是最好的。我将进一步探讨这个问题。+1用于使用
    s。随着CSS的发展,无论选择何种布局或样式,标记都可以由内容结构来处理。