Meteor或Iron Router是否会干扰锚标签上的jQuery事件?

问题描述 投票:0回答:2

我使用的是一个第三方主题,它使用锚标签来切换左菜单的可见性,点击时,一切都很好,直到我开始分割我的HTML和安装Iron Router。一切都很好,直到我开始将HTML分割成partials并安装Iron Router。我可能只是忽略了某个地方的bug,还是MeteorIronRouter要求我做一些特定的事情来处理锚标签上的所有jQuery事件?我是否需要改变所有的jQuery事件,让他们知道页面更新(通过 on())? 这个特定的元素没有一个 href= 属性,我不希望URL发生变化。

meteor dom-events iron-router jquery-events
2个回答
1
投票

Iron Router拦截链接上的点击事件,这样它就可以自己处理它们。这肯定会破坏你的插件的功能。如果你的主题允许通过另一个元素来处理变化,那就是完美的解决方案。像切换菜单的可见性可以通过点击按钮甚至div来管理。

如果改变切换元素是不可能的,你需要告诉Iron Router不要拦截那个特定的锚。请看 这个问题 以了解详情。


0
投票

这里的关键词原来是 "将我的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
   }
});
© www.soinside.com 2019 - 2024. All rights reserved.