Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.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
Jquery ui 将函数名附加到JQuery对话框按钮_Jquery Ui_Jquery Ui Dialog - Fatal编程技术网

Jquery ui 将函数名附加到JQuery对话框按钮

Jquery ui 将函数名附加到JQuery对话框按钮,jquery-ui,jquery-ui-dialog,Jquery Ui,Jquery Ui Dialog,我正在使用jquerydialog创建一个对话框插件。下面是可以传递的参数。它包括用户想要添加的按钮文本和在点击该按钮时执行的回调函数名 var settings = $.extend({ message: 'Your action is successful', title: 'Message', showButton: true, buttonText: 'OK', onButtonClick: 'OnB

我正在使用jquerydialog创建一个对话框插件。下面是可以传递的参数。它包括用户想要添加的按钮文本和在点击该按钮时执行的回调函数名

    var settings = $.extend({
        message: 'Your action is successful',
        title: 'Message',
        showButton: true,
        buttonText: 'OK',
        onButtonClick: 'OnButtonClick',
        allowClose: true
    }, options);
我面临的问题是附加该函数名以单击按钮事件。我试图做下面的事情,但它抛出了错误

    $('#dialog-message').dialog({
        buttons: [{
            text: settings.buttonText,
            click: window[settings.onButtonClick]()

        }],
        closeOnEscape: true,
        close: function (e) {
            $(this).empty();
            $(this).dialog('destroy');
    }
    });

任何关于如何将该函数名附加到click event(单击事件)的建议,因为我只有函数名。

插件的调用者应该为
onbutton(单击)
选项提供回调,而不是字符串。像这样:

function OnButtonClick(){
   //does some cool stuff
}

var settings = $.extend({
    message: 'Your action is successful',
    title: 'Message',
    showButton: true,
    buttonText: 'OK',
    onButtonClick: OnButtonClick,
    allowClose: true
}, options);
然后可以像这样绑定传入函数:

$('#dialog-message').dialog({
    buttons: [{
        text: settings.buttonText,
        click: settings.onButtonClick
    }],
    closeOnEscape: true,
    close: function (e) {
        $(this).empty();
        $(this).dialog('destroy');
    }
});
这是可能的,因为
onButtonClick
变量现在通过
设置
保存了对插件用户提供的回调的引用(而不是字符串)


希望有帮助

@user2009755:很高兴能帮上忙。欢迎来到StackOverflow!如果这有帮助,您可以将其标记为答案。about页面()将有助于了解该网站的工作原理!