我使用的是一个第三方主题,它使用锚标签来切换左菜单的可见性,点击时,一切都很好,直到我开始分割我的HTML和安装Iron Router。一切都很好,直到我开始将HTML分割成partials并安装Iron Router。我可能只是忽略了某个地方的bug,还是MeteorIronRouter要求我做一些特定的事情来处理锚标签上的所有jQuery事件?我是否需要改变所有的jQuery事件,让他们知道页面更新(通过 on()
)? 这个特定的元素没有一个 href=
属性,我不希望URL发生变化。
Iron Router拦截链接上的点击事件,这样它就可以自己处理它们。这肯定会破坏你的插件的功能。如果你的主题允许通过另一个元素来处理变化,那就是完美的解决方案。像切换菜单的可见性可以通过点击按钮甚至div来管理。
如果改变切换元素是不可能的,你需要告诉Iron Router不要拦截那个特定的锚。请看 这个问题 以了解详情。
这里的关键词原来是 "将我的HTML分割成partials",因为我的问题与铁流星无关。一旦你开始将HTML放入模板中,你就不能依靠写进主题的jQuery来意识到页面的更新,而这正是Meteor的精髓所在。例如,我的主题包含以下代码。
$('.menutoggle').click(function(){
// do things
});
事实上,这必须被修改为使用 on()
功能。
$(document).on('click', '.menutoggle', function() {
// do things
});
或者更好的是,在我的模板上注册。
Template.mypartialname.events({
'click .menutoggle': function() {
// do things
}
});