涡轮链接和事件不能正常发射



我正在使用一个有很多嵌入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");
});

最新更新