Javascript 如果用户单击第二个下拉链接,请关闭下拉菜单

Javascript 如果用户单击第二个下拉链接,请关闭下拉菜单,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我有一个带有多个下拉菜单的导航栏。因此,当我单击第一个链接时,它会打开下拉列表,但当我单击第二个链接时,第一个下拉列表不会关闭。因此,如果用户单击第二个链接,我想关闭下拉菜单 //main.js javascript文件 函数myFunction{ var x=document.getElementByIdmyTopnav1; 如果x.className==topnav1{ x、 className+=responsive1; }否则{ x、 className=topnav1; } } 函数

我有一个带有多个下拉菜单的导航栏。因此,当我单击第一个链接时,它会打开下拉列表,但当我单击第二个链接时,第一个下拉列表不会关闭。因此,如果用户单击第二个链接,我想关闭下拉菜单

//main.js javascript文件 函数myFunction{ var x=document.getElementByIdmyTopnav1; 如果x.className==topnav1{ x、 className+=responsive1; }否则{ x、 className=topnav1; } } 函数切换DropDownMyId{ var element=document.getElementByIdmyid; element.classList.togglemystyle; } //如果用户在下拉菜单外单击,请关闭下拉菜单 window.onclick=functionevent{ 如果!event.target.matches'.dropbtn1'{ var dropdowns=document.getElementsByClassNamedropdown-content1; var i; 对于i=0;i Jquery非常快速而且非常有用 因为您的问题将在jquery中这样解决

$('.yourdropdownsclass').on('click', function(){
   var target = $(this).attr('id');
   $("#"+target).show().siblings("div").hide();
});
.你的下等舱

你的下拉列表是什么

$this.attr'id'

这是另一个下拉列表的ID

$+target.show.siblingsdiv.hide

target是其他下拉列表的ID的名称,将其存储到变量中,并显示它和隐藏另一个同级的下拉列表。 我希望它能帮助你

我建议您使用下面的JQUERY CDN

Jquery非常快速而且非常有用 因为您的问题将在jquery中这样解决

$('.yourdropdownsclass').on('click', function(){
   var target = $(this).attr('id');
   $("#"+target).show().siblings("div").hide();
});
.你的下等舱

你的下拉列表是什么

$this.attr'id'

这是另一个下拉列表的ID

$+target.show.siblingsdiv.hide

target是其他下拉列表的ID的名称,将其存储到变量中,并显示它和隐藏另一个同级的下拉列表。
我希望它能帮助你

如果您想使用JavaScript实现该功能,那么在打开新的下拉列表后,必须使用ids来关闭其他下拉列表

所以,我研究的解决方案是创建一个新方法closeMenus,一旦执行toggleDropDown,它将关闭其他下拉菜单

函数myFunction{ var x=document.getElementByIdmyTopnav1; 如果x.className==topnav1{ x、 className+=responsive1; }否则{ x、 className=topnav1; } } 函数切换DropDownMyId{ closeMenusmyid; var element=document.getElementByIdmyid; element.classList.togglemystyle; } 函数closeMenuscurrentId{ var dropdowns=document.getElementsByClassNamedropdown-content1; var i; 对于i=0;i如果您想使用JavaScript实现该功能,那么在打开新的下拉列表后,必须使用ids来关闭其他下拉列表

所以,我研究的解决方案是创建一个新方法closeMenus,一旦执行toggleDropDown,它将关闭其他下拉菜单

函数myFunction{ var x=document.getElementByIdmyTopnav1; 如果x.className==topnav1{ x、 className+=responsive1; }否则{ x、 className=topnav1; } } 函数切换DropDownMyId{ closeMenusmyid; var element=document.getElementByIdmyid; element.classList.togglemystyle; } 函数closeMenuscurrentId{ var dropdowns=document.getElementsByClassNamedropdown-content1; var i; 对于i=0;i我假设您的mystyle类使下拉列表处于活动状态。 然后你可以做这样的事情

// Get all the dropdowns
var dropdowns = document.getElementByClassName(".dropdown1")

// When clicked on dropdown this function will fire
var callThisFunction = function (e) {
    // Check the event
    e = e || window.event;

    // Get the target element
    let target = e.target || e.srcElement;

    // Close all dropdowns
    let activeDropdowns = document.getElementsByClassName("mystyle");
    activeDropdowns.forEach(function (openDropdown) {
          openDropdown.classList.remove('mystyle');
    })

    // Make the current dropdown active
    target.className += 'mystyle'
}

// This adds click event listener to all dropdowns and tells it to fire callThisFunction when clicked

dropdowns.forEach(function (dropdown) {
    dropdown[i].addEventListener('click', callThisFunction, false);
})

我假设您的mystyle类使下拉列表处于活动状态。 然后你可以做这样的事情 >
“这是获取另一个下拉列表的ID”。该行获取您单击的下拉列表的id,该下拉列表假定存在id,然后继续使用$+target查找它,它与$this完全相同。“Target是其他下拉列表的ID名称”,不,不是。这段代码以一种迂回的方式显示您单击的元素,这可能是无效的,因为它假定您有一个id,然后隐藏您单击的元素的同级div。提醒:ID必须是唯一的。这表示您的问题是否已解决。然而是的,对不起,我错了,但是兄弟姐妹在隐藏吗?我不是OP,而是$this.show.siblingsdiv.hide;与您拥有的2行代码执行相同的操作,但更安全,因为它不使用任何ID。不管它是否有效,我不确定。但它完成了同样的事情,“这是获得另一个下拉列表的ID”。该行获取您单击的下拉列表的id,该下拉列表假定存在id,然后继续使用$+target查找它,它与$this完全相同。“Target是其他下拉列表的ID名称”,不,不是。这段代码以一种迂回的方式显示您单击的元素,这可能是无效的,因为它假定您有一个id,然后隐藏您单击的元素的同级div。提醒:ID必须是唯一的。这表示您的问题是否已解决。然而是的,对不起,我错了,但是兄弟姐妹在隐藏吗?我不是OP,而是$this.show.siblingsdiv.hide;与您拥有的2行代码执行相同的操作,但更安全,因为它不使用任何ID。不管它是否有效,我不确定。但它也能完成同样的事情。是的,这很有效。我还有一个问题,我必须将活动类应用于导航链接和从下拉列表中选择的选项。请帮我解决这个问题。@lalitkumar很抱歉响应太晚,当用户单击元素时,您可以添加活动类,您可以看到一个示例是的,这很有效。我还有一个问题,我必须将活动类应用于导航链接和从下拉列表中选择的选项。请帮我解决这个问题。@lalitkumar很抱歉响应太晚,当用户单击元素时,您可以添加活动类,您可以看到一个示例,我还有一个问题,我必须将活动类应用于导航链接和从下拉列表中选择的选项。plzz帮我解决这个问题。我还有一个问题,我必须将活动类应用于导航链接和从下拉列表中选择的选项。请帮我做这个。