Javascript 动态jQuery UI对话框回调函数问题

Javascript 动态jQuery UI对话框回调函数问题,javascript,jquery,jquery-ui,dialog,dynamic-function,Javascript,Jquery,Jquery Ui,Dialog,Dynamic Function,我在使用jQueryUI对话框模式时遇到问题,并试图传入一个动态名称/值,用作要执行的回调函数(以及参数) 我有一个调用UI对话框的函数。。。。as接受参数列表,其中一个参数是回调函数名。。以及与之相关的任何论据 我无法让jQuery识别作为函数的动态名称/参数 function ShowDialogBox(title, content, btn1text, btn2text, callbackFunction, argList){ var btn1css; var btn2css; //hi

我在使用jQueryUI对话框模式时遇到问题,并试图传入一个动态名称/值,用作要执行的回调函数(以及参数)

我有一个调用UI对话框的函数。。。。as接受参数列表,其中一个参数是回调函数名。。以及与之相关的任何论据

我无法让jQuery识别作为函数的动态名称/参数

function ShowDialogBox(title, content, btn1text, btn2text, callbackFunction, argList){
var btn1css;
var btn2css;

//hide buttons if not in use
if(btn1text == ''){
    btn1css = "hidecss";
}else{
    btn1css = "showcss";
}

if(btn2text == ''){
    btn2css = "hidecss";
}else{
    btn2css = "showcss";
}

//main message/content
$("#lblMessage").html(content);


//params
$("#dialog").dialog({
    resizable: false,
    title: title,
    modal: true,
    width: '400px',
    height: 'auto',
    bgiframe: false,
    //hide: {effect: 'scale', duration: 100},
    
    buttons: [
        {
            text: btn1text,
            "class": btn1css,
            click: function () {
                //alert("button 1 pressed");
                
                //new dialog when cup is in position
                console.log('Call Back Check: ' + callbackFunction);
                console.log("Arg List: " + argList);
                eval(callbackFunction + '()'); // executes, but cant get any params?
                eval(callbackFunction + '(' +argList +')'); //doesnt work
                //callbackFunction(argList); // doesnt work


                //functionTest = window[callbackFunction];
                //functionTest(argList);
                
                //Goal: call new ShowDialogBox with different callback function name
                //ShowDialogBox('', 'Press start when the cup is in the holder.', 'Start', '', 'submitFunction',null);
                
                $("#dialog").dialog('close');
                
            }
        },
        {
            text: btn2text,
            "class": btn2css,
            click: function () {
                //alert("button 2 pressed");
                $("#dialog").dialog('close');
            }
        }
    ]
});
}

callbackFunction—要调用的回调函数的名称(ShowDialogBox) argList-伴随所述回调函数的参数/参数列表

下面是调用它的方式(再次使用回调函数名:ShowDialogBox[但这次使用不同的回调函数])

有效:(因为我的上一个嵌套callback函数没有任何要传递的参数)

//双重验证(对话框提示)
ShowDialogBox(“,”您确定要订购:
“+currentSelection”,“Continue”,“No”,“ShowDialogBox”,“请将饮料放入支架中,准备好后按start”,“start”,“submitForm”);
但是这不起作用。。因为传递了一个额外的嵌套callback函数名。。争论呢?(但由于所有超过第一个callBackFunction参数的参数现在都是“…argList”。我不知道如何访问它(如果可能的话))

ShowDialogBox(“,”您确定要排序:
“+currentSelection,'Continue','No',callBackTest,'Some Title','Some Message','Button 1 text','Button 2 text',someOtherCallBackFunction,'No','allowed','args',在嵌套回调函数中?如何(再次?);
对于第一个问题,不要引用回调函数名

ShowDialogBox('', text , 'Continue','No', submitForm);

function submitForm() { /* ... */ }
要向其传递动态数量的参数,请使用,它将创建一个数组,其中包含传递给函数并返回给各个参数的所有剩余参数

function ShowDialogBox(title, content, btn1text, btn2text, callbackFunction, ...argList) {
    // Execute the callback
    callbackFunction(...argList);
}

令人惊叹的!谢谢你给我有关报价的提示。我没有完全理解“扩展语法”。。。但它在很大程度上起了作用。至少在这种情况下,它正在按预期工作。不过我还有一个问题。。。一个如何“嵌套”另一个对同一函数的调用。。是否再次使用相同的参数(长度)?理论上,这个“函数”可以被反复调用。(每次需要动态回调函数名..和参数列表..更新OP以获得新的示例。@在调用
ShowDialog
时轻声说,不管您传递给ìt的参数有多少,都会转换为数组,比如:
(回调,1,2,3)
那么
args`将是数组
[1,2,3]
如果您只是将其传递给回调,那么它将只是一个参数,即数组本身,但通过使用
(…args)调用它
,数组将被解包到各个项中。解包的参数将被传递到函数中,不管它们是什么,但传递的数量与函数定义的数量相同。谢谢……我现在很难理解的是……如何动态地传递另一个(嵌套的)参数一组参数?到一个稍后嵌套的动态命名/调用的callBackFunction?现在..我的dialog函数接受一些文本参数..但也接受回调函数名和该回调函数的任何参数。这似乎适用于第一个回调/params参数..但第二个对话框提示(从回调触发)还有一个回调函数..(执行..),但我不知道如何将参数也传递给该函数?(动态)自从代码> AlgList的私语是一个数组,固定的参数是已知的,切片数组或使用。但是回调的参数的数目是可变的,你必须知道它的每一个深度,你可以使用。
//double verify (dialog prompts)
ShowDialogBox('','Are you sure you want to order: <br>' + currentSelection, 'Continue','No', ShowDialogBox, '', 'Please place drink in holder and press start when ready.', 'Start', '', submitForm, '');
ShowDialogBox('','Are you sure you want to order: <br>' + currentSelection, 'Continue','No', callBackTest, 'Some Title', 'Some Message', 'Button 1 text', 'Button 2 text', someOtherCallBackFunction, 'no', 'args allowed', 'in nested callback function? how is it done (again?)');
ShowDialogBox('', text , 'Continue','No', submitForm);

function submitForm() { /* ... */ }
function ShowDialogBox(title, content, btn1text, btn2text, callbackFunction, ...argList) {
    // Execute the callback
    callbackFunction(...argList);
}