gpt4 book ai didi

javascript - 下拉菜单的jQuery问题

转载 作者:太空宇宙 更新时间:2023-11-04 04:21:54 26 4
gpt4 key购买 nike

问题是:

  • 下拉菜单menu(#sub-button)通过鼠标点击关闭,只有在点击可见的#button时才会关闭
  • 例如,当我尝试打开第二个下拉菜单时 menu(#sub-button2) 当单击 #button2 时,第一个下拉菜单应立即关闭

HTML代码:

<html>
<head>
<title>jquery ddm</title>
<style type="text/css">
#button {
position:fixed;
width:150px;
height:40px;
background-color:blue;
}
#sub-button {
display: none;
width:150px;
height:30px;
margin-top:41px;
background-color:cyan;
}
#button2 {
position:fixed;
width:150px;
height:40px;
background-color:orange;
}
#sub-button2 {
display: none;
width:150px;
height:30px;
margin-top:41px;
background-color:aqua;
}
</style>
</head>
<body>
<div id="button">
<div id="sub-button">6</div>
</div>
<div style="clear:both"></div>
<div id="button2" style="margin-left:152px;">
<div id="sub-button2">66</div>
</div>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/toggle.js"></script>

和 js 代码 (toggle.js):

var myTimeout;
// show/hide sub-button menu
$( "#button" ).click(function() {
$( "#sub-button" ).toggle();
});
// if mouse out of button and sub-button divs - close sub-button after 860ms
$( "#button" ).mouseout(function() {
myTimeout = setTimeout( "jQuery('#sub-button').hide();",860 );
});
// if timer that are about to close sub-button is launched, stop it
// by hover button or sub-button divs
$( "#button" ).mouseover(function() {
clearTimeout(myTimeout);
});

var myTimeout2;
$( "#button2" ).click(function() {
$( "#sub-button2" ).toggle();
});
$( "#button2" ).mouseout(function() {
myTimeout2 = setTimeout( "jQuery('#sub-button2').hide();",860 );
});
$( "#button2" ).mouseover(function() {
clearTimeout(myTimeout2);
});

最佳答案

第一个问题是子菜单是 #button 的子菜单,因此点击事件将冒泡到父菜单和 #button 点击的代码事件将被调用。

您可以通过测试原始点击目标来解决的第一个问题:

$( "#button" ).click(function(e) {
if(e.target.id === 'button'){

$( "#sub-button" ).toggle();

}

});

第二个问题是,在您的代码中,您没有在点击第二个按钮时关闭第一个按钮,反之亦然

你可以添加:

$("#button").click(function (e) {
if (e.target.id === 'button') {
$("#sub-button2").hide();
$("#sub-button").toggle();
}

});

虽然如果您以后要有更多按钮,这个 JS 可以而且应该被整理并提高效率,否则您将面临代码变得难以维护的风险。

这里是 FIDDLE

关于javascript - 下拉菜单的jQuery问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18919309/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com