当所选元素是表格时,为什么jqueryui.dialog忽略height参数?

Jak*_*ake 4 html jquery jquery-ui html-table jquery-ui-dialog

当我尝试将a呈现<table>为对话框窗口时,我的height:750参数似乎被忽略;高度超过2100像素的内容将强制对话框以相同高度呈现,从而使整个页面滚动:(示例)

此外,这是一个$("table").dialog()调用,其中表比参数。在此示例中,对话框的高度缩小以匹配表格单元格的内容,再次忽略了750 height参数。(例)

解决方法:

<div>标记内呈现表格似乎可以消除此问题,但感觉很不灵通:

短表+高大文本(以div包裹)

长桌包裹在div

另外,这是我的变通方法,在该方法中,我呈现一个空对话框,然后将表作为open()回调的一部分拉入窗口:

渲染后解决方法

这是行为不一致的错误,还是设计使然?

Dyl*_*ade 5

似乎在设计过程中不考虑高度选项就不会打开表对话框。我的经验是,jQuery UI组件行为最一致地包装为<div>元素,看起来您发现了相同的结果,但是正如您所说,这不是必需的。

dialog()上的height选项的默认值为auto,它应缩放对话框以适合元素。当table传递一个元素dialog()导致auto覆盖init的height选项时,可能会出现错误。我尝试在您的第一个示例中更改width值,dialog()但通过更改width可以正确响应,但是height不会变化。我还对选项进行了重新排序,因此高度是第一位,但这也没有影响。

JS Bin不适用于我,所以我将您的代码移到了这个小提琴,并简化了对话框的init调用。 https://jsfiddle.net/z601hhjd/

// Open dialog and set height and width on init
// Width option works at initialization but height does not
$(".shortTable").dialog({
     'height':'300',
     'width':'500',
     open: function(event, ui) {
         // Height setter has no effect after init either
         $(this).dialog("option", "height", 200 );

         // Width setter works after initialization too
         $(this).dialog("option", "width", 200 );
     }
});
Run Code Online (Sandbox Code Playgroud)

看起来jQuery UI中存在一个错误,该错误用于设置table文档相冲突的元素的高度,但是此功能与@Peri所说的HTML规范一致。