我正在使用一个有很多嵌入jQuery的模板建立一个网站,但有涡轮链接和事件不能正常发射的问题。
我的代码如下:
var uiNav = function() {
// When a submenu link is clicked
jQuery('[data-toggle="nav-submenu"]').on('click', function(e){
// Get link
var $link = jQuery(this);
// Get link's parent
var $parentLi = $link.parent('li');
if ($parentLi.hasClass('open')) { // If submenu is open, close it..
$parentLi.removeClass('open');
} else { // .. else if submenu is closed, close all other (same level) submenus first before open it
$link
.closest('ul')
.find('> li')
.removeClass('open');
$parentLi
.addClass('open');
}
// Remove focus from submenu link
if ($lHtml.hasClass('no-focus')) {
$link.blur();
}
return false;
});
};
处理向下折叠菜单。该函数使用其他布局帮助程序初始化,如下所示:
jQuery(document).on('page:change', function() {
if (typeof angular == 'undefined') {
App.init();
}
});
App.init只会触发uiNav和其他函数。
另外,我有下面的脚本来处理添加适当的类到菜单,这取决于你在应用程序
$(document).on('page:change', function() {
var url = window.location.pathname;
$('[href="' + url + '"]').closest("ul").parent().addClass("open");
$('[href="' + url + '"]').addClass("active");
});
现在我正在使用涡轮链接,并且有大量的问题,让它全部工作。情况是:
- 打开导航菜单,工作正常,点击链接,遵循链接良好
- 打开其他菜单,打开fine,点击链接,一切正常 尝试打开一个不同的菜单。旧的是打开关闭,但没有其他打开和脚本不再做任何事情。
你知道我哪里做错了吗?我正在考虑放弃涡轮链接,但我很喜欢平滑的过渡。
最后总算弄明白了。在初始化函数中添加了一些console.log,以查看它在做什么。结果是它发射了3次,5次,7次等等…
解决方案是将初始化式更改为:jQuery(document).on('ready page:change', function() {
if (typeof angular == 'undefined') {
App.init();
}
jQuery(document).off('page:change')
});
加上添加类的脚本:
$(document).on('ready page:change', function() {
var url = window.location.pathname;
$('[href="' + url + '"]').closest("ul").parent().addClass("open");
$('[href="' + url + '"]').addClass("active");
});