Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQueryUI模式-添加多个按钮_Javascript_Jquery_Arrays_Jquery Ui - Fatal编程技术网

Javascript jQueryUI模式-添加多个按钮

Javascript jQueryUI模式-添加多个按钮,javascript,jquery,arrays,jquery-ui,Javascript,Jquery,Arrays,Jquery Ui,使用jQuery UI时,可以在初始化后设置模式按钮,如下所示: $( ".selector" ).dialog( "option", "buttons", { "Ok": function() { $(this).dialog("close"); } } ); 但是,我想做的是根据逻辑条件添加多个按钮: if ( canClose ){ $( ".selector" ).dialog( "option", "buttons", { "Ok": function() { $(this)

使用jQuery UI时,可以在初始化后设置模式按钮,如下所示:

$( ".selector" ).dialog( "option", "buttons", { "Ok": function() { $(this).dialog("close"); } } );
但是,我想做的是根据逻辑条件添加多个按钮:

if ( canClose ){
    $( ".selector" ).dialog( "option", "buttons", { "Ok": function() { $(this).dialog("close"); } } );
}

if ( canAlert ){
    $( ".selector" ).dialog( "option", "buttons", { "Ok": function() { alert('Hello'); } } );
}
但是,上面的代码无法正常工作,因为它每次都会重置按钮数组

如何使用逻辑添加X个按钮而不丢失任何现有按钮?

使用该选项创建两个按钮:

if ( canClose && canAlert )
    $( ".selector" ).dialog( "option", "buttons", [
        {
            text: "Ok",
            click: function() { $(this).dialog("close"); }
        },
        {
            text: "Ok",
            click: function() { alert('Hello'); }
        }
    ] );
试着这样做:

var buttons = {};

if (canClose) {
     buttons.Close = function() { $(this).dialog("close"); }
}

if (canAlert) {
    buttons.Alert = function() { alert('Hello'); }
}

$(".selector" ).dialog( "option", "buttons", buttons );

因此,只需创建一次对话框。当然,按钮需要两个不同的名称,否则第二个将覆盖第一个。但是,没有几个按钮具有相同的文本,这只是良好的GUI设计

我通过预先创建一个数组,然后将其分配给modal buttons属性来实现我的目标:

var buttons = new Array();

if ( occurance.canEdit ){
    buttons[buttons.length] = { text: "Edit", click: function(){ editOccurance(data[0],data[1]); } };
}

if ( occurance.canDelete ){
    buttons[buttons.length] = { text: "Delete", click: function(){ deleteOccurance(data[0],data[1]); } };
}

$( "#dialogOccurance" ).dialog( "option", "buttons", buttons );

@Josiah Ruddell我想要的代码是允许所有四种可能的按钮组合通过逻辑。没有按钮、一个按钮、另一个按钮或两者都有。