我有一个包含一些信息对话框的页面(本例中为 5 个)。目标是在一个页面上拥有可变数量的信息框,每个信息框都由一个唯一的按钮调用。单击该按钮时,将关闭任何其他框并显示当前框。与其尝试跟踪打开或即将打开哪个框,我想我只需关闭所有框并打开当前信息框。
下面的代码有效:第一个 for 循环初始化所有对话框,closeBoxes() 函数在打开分配的对话框之前关闭任何打开的对话框。但是,似乎我应该能够遍历 .click(function()..) 并添加任意数量的信息框。我已经在循环中尝试了 $("#btn"+i)...("#info"+i) ,但这根本行不通。
var TotalInfoBoxes=5;
for ( var i=1; i<=TotalInfoBoxes; i++) {
$("#info"+i).dialog({ autoOpen: false });
}
$("#btn1").click(function() { closeBoxes(); $("#info1").dialog( "open" ); });
$("#btn2").click(function() { closeBoxes(); $("#info2").dialog( "open" ); });
$("#btn3").click(function() { closeBoxes(); $("#info3").dialog( "open" ); });
$("#btn4").click(function() { closeBoxes(); $("#info4").dialog( "open" ); });
$("#btn5").click(function() { closeBoxes(); $("#info5").dialog( "open" ); });
function closeBoxes() {
for (var i=1; i<=TotalInfoBoxes; i++){
$("#info"+i).dialog("close");
}
}
对话框是一个优雅的解决方案,但我需要一些更通用的代码,因为给定页面上可能有 20 或 30 个信息框。非常感谢您的意见。