Javascript jQuery UI可调整大小:如何防止其拉伸?

Javascript jQuery UI可调整大小:如何防止其拉伸?,javascript,jquery,jquery-ui,Javascript,Jquery,Jquery Ui,我有一个基于jQuery UI的可调整大小的小部件(版本1.8.24),它在显示时立即填充项目,然后可以根据用户的操作清除并再次填充。大致如下: <div class="dialog ui-resizable"> <div class="dialog-header">…</div> <div class="dialog-contents">…</div> <div class="dialog-control

我有一个基于jQuery UI的可调整大小的小部件(版本1.8.24),它在显示时立即填充项目,然后可以根据用户的操作清除并再次填充。大致如下:

<div class="dialog ui-resizable">
    <div class="dialog-header">…</div>
    <div class="dialog-contents">…</div>
    <div class="dialog-controls">…</div>
    <div class="ui-resizable-handle ui-resizable-e" style="z-index: 1000"></div>
    …
</div>
如果小部件尚未手动调整大小,则它会随着
div.dialog-contents
的内容而增减。这是不希望的。但是,如果拖动了任何一个调整大小的句柄,它就会开始像我希望的那样运行。E无论在
div.dialog-contents
中发生什么,都保持其大小不变

如何使其从一开始就保持大小不变?

我注意到
\u mouseDrag
方法的
可调整大小
宽度
高度
设置为DOM元素的
样式
属性中的实际值。通常,我会在呈现小部件后立即自己设置
样式
属性,但它在
中有许多内部元素,所以这不起作用

有没有办法用零坐标增量编程调用
\u mouseDrag
,这样小部件就会认为触发了一个真正的
“mouseDrag”
事件?如果这是可能的,我会在小部件初始化后立即模拟鼠标拖动来解决这个问题

我试过类似的方法

dlg.data("resizable").
    _mouseDrag(new $.Event("mousedrag",
                           { dragState: "end",
                             dragDeltaT: 0,
                             dragDelta: 0,
                             dragDeltaX: 0,
                             dragDeltaY: 0 }));
不同的事件没有明显的成功(它抛出一个错误,因为某些属性似乎总是丢失)


编辑1:jQuery版本。

我已经解决了这个问题:

        var noStretchingHack = function (widget) {
            var contents = widget.find(".dialog-contents");
            var hDiff = widget.height() - contents.height();
            widget.css({width: "600px",
                        height: (400 + hDiff) + "px",
                        top: "0px",
                        left: "0px"});
            contents.css({width: "600px",
                          height: "400px"});
            widget.trigger("resize");
        };
我将其作为回调传递给contents updater函数,以便它在第一次填充内容后立即执行。我并不为自己感到骄傲,我希望听到一个更优雅的解决方案,如果它适用于jQueryUI1.8.24的话

        var noStretchingHack = function (widget) {
            var contents = widget.find(".dialog-contents");
            var hDiff = widget.height() - contents.height();
            widget.css({width: "600px",
                        height: (400 + hDiff) + "px",
                        top: "0px",
                        left: "0px"});
            contents.css({width: "600px",
                          height: "400px"});
            widget.trigger("resize");
        };