【问题标题】:Access jQueryUI Dialog buttons upon creation创建时访问 jQueryUI 对话框按钮
【发布时间】:2015-09-21 15:04:24
【问题描述】:

如何在创建时访问 jQueryUI 对话框按钮并获取它们的大小?作为一种解决方法,我可以在它打开时这样做。

http://jsfiddle.net/1ueho4tq/

var $button1;
var dialog = $('#dialog').dialog({
    autoOpen: false,
    create: function (event, ui) {
        var $button1 = $('#button1');
        console.log("$button1 create", $button1, $button1.outerHeight(), $button1.position().top);
    },
    open: function (event, ui) {
        if (!$button1) {
            $button1 = $('#button1');
            console.log("$button1 open", $button1, $button1.outerHeight(), $button1.position().top);
        }
    },
    buttons: [{
        id: 'button1',
        text: 'Upload',
        click: function () {
            console.log('button1');
        }
    }, {
        id: 'button2',
        text: 'Save',
        click: function () {
            console.log('button2');
        }
    }, {
        text: 'Cancel',
        click: function () {
            $(this).dialog("close");
        }
    }]
});
$('#open').click(function () {
    dialog.dialog('open');
});

<div id="dialog"></div>
<button id="open">Open</button>

【问题讨论】:

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


    【解决方案1】:

    您可以使用 buttons 选项 getter 获取 jQuery UI 对话框按钮。

    代码:

    var buttons = $('#dialog').dialog('option', 'buttons');
    

    但是如果你需要检查它们的尺寸,你需要在对话框打开后使用数组。

    代码:

    open: function (event, ui) {
        $.each(buttons, function (i, e) {
            console.log($('#'+e.id).outerHeight())
        });
    },
    

    演示:http://jsfiddle.net/f4m6z9hc/

    【讨论】:

    • 谢谢欧文。所以在打开对话框之前它们并不真正存在?
    • @user1032531 不,如果您检查 DOM,它们已经在其中,这取决于您要做什么
    • 如果它们已经在 DOM 中,为什么我无法获取它们的大小和位置?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-03
    • 2011-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多