如何更改下拉菜单的{href

时间:2018-03-05 06:23:16

标签: javascript jquery drop-down-menu

我有一个下拉菜单,当我点击它打开子菜单,当点击任何地方(也在它上面)它关闭。 我希望当这个菜单打开时将#ref从#更改为自己的页面,当我点击它时,不要关闭菜单而是打开一个新页面。 抱歉不好解释。 这就是我的想法:

$('body').on('click',(function(){
        $('.dropdown').removeClass('open');
        $('.dropdown a').attr('href','#');
        $('.dropdown a').attr('data-toggle','dropdown');
  });   
$('.dropdown').on('click' ,function(){
    $(this).toggleClass('open');
    $(".open").on("click", function(){
        $('.dropdown a').attr('href','http://example.com');
                $('.dropdown a').removeAttr('data-toggle');
    });
});

我也试过这个但是效果不好

$('body').click(function(evt){
       if(evt.target.class == "dropdown")
          return;
$('.dropdown').toggleClass('open');
    $(".open").on("click", function(){
        $('.dropdown a').attr('href','http://example.com');
        $('.dropdown a').removeAttr('data-toggle');
    });
    if($(evt.target).closest('.dropdown').length)
          return;             
        $('.dropdown').removeClass('open');
        $('.dropdown a').attr('href','#');
        $('.dropdown a').attr('data-toggle','dropdown');
});

这是我的HTML代码:

<li class="menu-item dropdown">
    <a href="#" data-toggle="dropdown">dropdown</a>
    <ul role="menu" class=" dropdown-menu">
        <li class="menu-item">page</li>
    </ul>
</li>

2 个答案:

答案 0 :(得分:0)

尝试下面的代码段。

    $('body').on('click',(function(){
            $('.dropdown').removeClass('open');
            $('.dropdown a').attr('href','#');
            $('.dropdown a').attr('data-toggle','dropdown');
      });   
    $('.dropdown').on('click' ,function(){
        $(this).addClass('open');     
    });

 $(".dropdown.open").on("click", function(e){
            e.stopPropagation();
            location.href = 'http://example.com';
        });

或者你可以做到

$('.dropdown').on('click' ,function(){
        if($(this).hasClass('open')) 
           location.href = 'http://example.com';  
        else
         $(this).addClass('open');  
    });

如果要在新窗口中打开,请使用window.open(url)。希望这有帮助

答案 1 :(得分:0)

我无法解决这个问题,但对于我的情况,我使用悬停进行展开菜单,然后点击打开页面。 在移动模式下,我禁用悬停,只需点击

即可展开
(function($) {
    function mediaSize() {
        if (window.matchMedia('(max-width: 767px)').matches) {
        $('.dropdown a').attr('data-toggle','dropdown');
        } else {
            $('.dropdown a').removeAttr('data-toggle');
            $('li.dropdown').mouseover(function(){
                $(this).addClass('open');
            });
            $('li.dropdown').mouseleave(function(){
                $(this).removeClass('open');
            });
        }
    };
  mediaSize();
    window.addEventListener('resize', mediaSize, false);  
})(jQuery);