Javascript 如何更改下拉菜单的href
我有一个下拉菜单,当我点击它打开子菜单,当点击任何地方(也在上面)它关闭。 我希望当此菜单打开时,将href从#更改为自己的页面,当我单击它时,不会关闭菜单,而是打开一个新页面。 对不起,我解释得不好。 这就是我的想法:Javascript 如何更改下拉菜单的href,javascript,jquery,drop-down-menu,Javascript,Jquery,Drop Down Menu,我有一个下拉菜单,当我点击它打开子菜单,当点击任何地方(也在上面)它关闭。 我希望当此菜单打开时,将href从#更改为自己的页面,当我单击它时,不会关闭菜单,而是打开一个新页面。 对不起,我解释得不好。 这就是我的想法: $('body').on('click',(function(){ $('.dropdown').removeClass('open'); $('.dropdown a').attr('href','#'); $('.dropdo
$('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>
- 第页
试试下面的代码片段
$('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)。希望这有帮助我无法解决这个问题,但对于我的情况,我使用鼠标悬停来展开菜单,然后单击打开页面。 在移动模式下,我禁用悬停,只按一下展开
(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);
让我们看看你的HTMLdosn不起作用。我添加body在“open”类打开后单击以删除该类,但它首先删除该类,而“open”类不会在alluse e.stopPropagation()处添加<代码>$('.dropdown').on('click',函数(e){e.stopPropagation();$(this.addClass('open');})这正是我的问题。我只想在下拉菜单打开时转到外部链接,但在您的示例和我的问题中,下拉菜单打开后再次关闭外部链接,但这不是我想要的。我解释得不好。这是一个导航栏,父项和子项都有一个页面。我想当点击家长,它打开,当它是打开点击它打开它的页面。我只想当下拉列表打开时,它链接到example.com