durandal - 防止 anchor 标记导航到主页

标签 durandal

我有一个常规 anchor 标记,其 href 属性设置为“#”。通常,这会阻止任何导航,但在 durandal 中它会将我导航到主视图。我怎样才能阻止它导航到该 View ? 我无法更改 html 和样式。它必须是那个 anchor 标记。但我可以给它绑定(bind)一个点击事件。有什么办法可以取消 anchor 点击事件中的导航吗?

问候

最佳答案

为其绑定(bind)点击事件并调用event.preventDefault()

<a href="#" id="someAnchor">Example</a>

$(function() {
   $('#someAnchor').click(function(event) { event.preventDefault(); });
});

这将阻止浏览器传播点击事件,并且什么也不会发生。但在点击事件中你可以做任何你想要的逻辑。

如果您使用knockout绑定(bind)点击事件那么请refer to this stackoverflow post关于如何通过淘汰赛绑定(bind)来做到这一点。

编辑 ** 根据 Tyrsius 的评论,使用淘汰绑定(bind)来绑定(bind)点击事件是更好的做法。

因此,建议您这样做:

<a href="#" data-bind="click: clickHandler">ClickMe</a>

clickhandler = function (e) {
  e.cancelBubble = true;
  if (e.stopPropagation) e.stopPropagation();
};

关于durandal - 防止 anchor 标记导航到主页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18145960/

相关文章:

javascript - Chrome 插件中的 Durandal

knockout.js - Durandal 中的 Knockout Mapping 插件未定义

javascript - 关闭 Durandal 子路由器的历史记录

javascript - 在 Durandal 模板项目中使用 TimePicker 或 Datepicker

knockout.js - Durandal /knockout 。更新其他 View / View 模型

asp.net-mvc - MVC bundle - 无法加载资源

javascript - 允许在移动设备上滚动的 Durandal 模式/对话框上下文

javascript - 为什么 TypeScript 需要 "this."模块的 "internal"前缀?

twitter-bootstrap - Durandal 2.0 中的 Bootstrap 下拉菜单

javascript - 在 Knockout 中过滤 observableArray