【问题标题】:jQueryUI add click function for multiple buttonsjQueryUI为多个按钮添加点击功能
【发布时间】:2013-09-02 05:27:49
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    用于关闭对话框简单使用此所有对话框关闭

    它们都继承了同一个类,这是全选并靠近的最好方法:

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

    【讨论】:

    • 这比循环和关闭每个项目要好得多。似乎这适用于: for ( var i=1; i
    • 感谢@user2738642,如果您喜欢,那么其他访问者使用此
    【解决方案2】:

    确保按钮和对话框有一个共同的类,例如 btn 用于按钮和 info 用于您的对话框

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

    【讨论】:

    • 优秀。将此与 Rituraj Ratan 的评论结合起来,我有一个更好的解决方案。
    • @user2738642 很高兴听到:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多