Meteor 或 Iron Router 是不是会干扰锚标记上的 jQuery 事件?
Posted
技术标签:
【中文标题】Meteor 或 Iron Router 是不是会干扰锚标记上的 jQuery 事件?【英文标题】:Does Meteor or Iron Router interfere with jQuery events on anchor tags?Meteor 或 Iron Router 是否会干扰锚标记上的 jQuery 事件? 【发布时间】:2014-06-08 11:27:16 【问题描述】:我正在使用第三方主题,该主题使用锚标记在单击时切换左侧菜单的可见性。在我开始将我的 html 分段并安装 Iron Router 之前,一切都运行良好。我可能只是忽略了某个地方的错误,还是 Meteor/IronRouter 要求我做一些特定的事情来处理锚标签上的所有 jQuery 事件?我是否需要更改所有 jQuery 事件以了解页面更新(通过on()
)? 此特定元素没有 href=
属性,我不希望 URL 发生变化。
【问题讨论】:
【参考方案1】:Iron Router 拦截链接上的点击事件,以便它自己处理它们。这肯定会破坏插件的功能。如果您的主题允许通过另一个元素来处理更改,那么这就是完美的解决方案。可以通过单击按钮甚至 div 来管理切换菜单可见性之类的事情。
如果无法更改切换元素,您需要告诉 Iron Router 不要拦截该特定锚点。详情请见this question。
【讨论】:
当我将锚点更改为按钮或 div 时,我似乎无法获得任何功能。如果默认情况下self.options.linkSelector = 'a[href]'
,Iron Router 不应该已经忽略了我的锚标签吗?【参考方案2】:
这里的关键词原来是“将我的 HTML 分割成部分”,因为我的问题与 Iron Router 无关。一旦开始将 HTML 放入模板中,就不能依赖写入主题的 jQuery 来了解作为 Meteor 本质的页面更新。例如,我的主题包含以下代码:
$('.menutoggle').click(function()
// do things
);
这实际上必须更改为使用on()
函数:
$(document).on('click', '.menutoggle', function()
// do things
);
或者也许更好,用我的模板注册:
Template.mypartialname.events(
'click .menutoggle': function()
// do things
);
【讨论】:
以上是关于Meteor 或 Iron Router 是不是会干扰锚标记上的 jQuery 事件?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Meteor 模板助手编辑 Iron-Router 中作为参数传递的值?
如何在 Iron Router Meteor 中检查当前路线
使用 Iron Router 在 Meteor 包中包含 HTML 模板
使用 Iron Router 路由到 Meteor autoform 提交的新数据?