Javascript jQuery UI可调整大小:如何防止其拉伸?
我有一个基于jQuery UI的可调整大小的小部件(版本1.8.24),它在显示时立即填充项目,然后可以根据用户的操作清除并再次填充。大致如下: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
<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");
};