Javascript 如果用户单击第二个下拉链接,请关闭下拉菜单
我有一个带有多个下拉菜单的导航栏。因此,当我单击第一个链接时,它会打开下拉列表,但当我单击第二个链接时,第一个下拉列表不会关闭。因此,如果用户单击第二个链接,我想关闭下拉菜单 //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;iJavascript 如果用户单击第二个下拉链接,请关闭下拉菜单,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; } } 函数
$('.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
// 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帮我解决这个问题。我还有一个问题,我必须将活动类应用于导航链接和从下拉列表中选择的选项。请帮我做这个。