在刷新或点击cookie时保持jQuery菜单打开

时间:2017-05-22 13:09:04

标签: javascript jquery cookies

我正在尝试使https://ionianbookstore.com/的这个下拉菜单保持活动点击子菜单或刷新,但它不起作用。

https://stackoverflow.com/questions/20396116/keeping-a-jquery-menu-open-with-cookies#= 这一个帮助我,将代码更改为我的插件代码,但仍然无法正常工作,我知道我没有使它正确,所以这就是为什么我打开一个新的问题,以便有人帮助:)

插件的.js就是这个:

!function(e){function n(e){e.hasClass("toggle__open")?e.removeClass("toggle__open"):e.addClass("toggle__open"),e.parent(".link__wrap").parent(".menu-item").children(".sub-menu").slideToggle("fast")}e(document).on("click",".easy-sidebar-menu-widget-toggler",function(t){n(e(this)),t.preventDefault(),t.stopPropagation()})}(jQuery);

这是另一个问题的解决方案(这个我曾经使它工作,但我没有做到) http://jsfiddle.net/pHgB7/2/

感谢帮助,甚至阅读:)

2 个答案:

答案 0 :(得分:0)

尝试停止侧边菜单中点击子项的传播。

  $("#yoursidemenu li a")
    .on('click', function (e) {
        e.stopPropagation();
    });

答案 1 :(得分:0)

根据我的理解,你所要做的就是在要切换的easy-sidebar-menu-widget-toggler元素上触发下面的内容。

e.addClass("toggle__open"), e.parent(".link__wrap").parent(".menu-item").children(".sub-menu").slideToggle("fast")

因此,您可以在元素上添加属性,然后设置一个cookie,以便知道每次点击刷新后您要打开哪个

<a href="#" class="easy-sidebar-menu-widget-toggler" data-toggle="history"><li>...</li></a>

$(function(){
    $('.easy-sidebar-menu-widget-toggler').on('click',function(){
        //Setup the cookie on click here
        $.cookies('myToggle',$(this).data('history'));
    });

    //then on the init of the page you can do
    //a check and if the cookie exists then toggle fine the 
    //a href and then toggle it.
    if($.cookies('myToggle'))
    {
        var toToogle = $.cookies('myToggle');
        var aToToggle = $('body').find('a[data-toggle="'+ toToggle + '"');
        aToToggle.addClass('toggle__open');
        aToToggle.parent(".link__wrap").parent(".menu-item").children(".sub-menu").slideToggle("fast");
    }
});

不要忘记,如果用户点击没有切换器的菜单,您需要实现一些逻辑来删除cookie。