jQuery为多个按钮添加单击功能

时间:2013-09-02 05:27:50

标签: javascript jquery jquery-ui jquery-ui-dialog

我有一个包含一些信息对话框的页面(本例中为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个信息框。非常感谢您的意见。

2 个答案:

答案 0 :(得分:0)

关闭对话框简单使用此对话框关闭

它们都继承了同一个类,这是选择all和close by的最佳方式:

$(".ui-dialog-content").dialog("close");

答案 1 :(得分:0)

确保按钮和对话框有一个共同的类,按 btn 按钮&amp;对话框 info

$(".btn").on('click',function(e){
     closeBoxes();
     var index=$(this).index();
     $(".info:eq("+index+")").dialog("open");      
});