Daw*_*hia 20 jquery jquery-ui jquery-ui-resizable
我有一个div元素,使jquery Resizable.它还具有Resize选项集,因此其他元素可以同时调整大小.
我想要做的是,以这种方式以编程方式设置此Resizable div元素的大小,即触发所有Resizable逻辑(特别是考虑到此另外的Resize选项).
我怎样才能做到这一点?
Nic*_*ver 26
更新:看起来jQuery UI的内部已经发生了巨大的变化,因为我回答了这个问题并且触发事件不再有效.
由于可调整大小的插件已经从根本上改变,因此没有直接触发事件的方法.它会在拖动鼠标时调整大小,而不是在最后同步项目.这是因为它监听resize
可调整大小的插件的内部传播事件,现在由_mouseDrag
处理程序触发.但它取决于沿途设置的变量,因此即使在内部触发也无济于事.
这意味着即使重写也至多是凌乱的.我建议只是手动调整alsoResize
元素大小,如果可能的话,完全独立于UI小部件.
但是为了好玩,让我们说它不是.问题是插件的内部设置了与先前和当前鼠标位置相关的各种属性,以便知道调整大小的程度.我们可以滥用用于向窗口小部件添加方法,如下所示:
$.widget("ui.resizable", $.ui.resizable, {
resizeTo: function(newSize) {
var start = new $.Event("mousedown", { pageX: 0, pageY: 0 });
this._mouseStart(start);
this.axis = 'se';
var end = new $.Event("mouseup", {
pageX: newSize.width - this.originalSize.width,
pageY: newSize.height - this.originalSize.height
});
this._mouseDrag(end);
this._mouseStop(end);
}
});
Run Code Online (Sandbox Code Playgroud)
这只是创建resizable
窗口小部件正在查找并触发它们的鼠标事件.如果你想做一些resizeBy
更简单的事情,因为我们所关心的只是三角洲:
var end = $.Event("mouseup", { pageX: newSize.width, pageY: newSize.height });
Run Code Online (Sandbox Code Playgroud)
您可以$.widget()
在jQuery UI之后和创建.resizable()
实例之前调用该方法,并且它们都有一个resizeTo
方法.那部分不会改变,它只是:
$(".selector").resizable({ alsoResize: ".other-selector" });
Run Code Online (Sandbox Code Playgroud)
然后调整大小,你会调用这样的新resizeTo
方法:
$(".selector").resizable("resizeTo", { height: 100, width: 200 });
Run Code Online (Sandbox Code Playgroud)
这就好像你立即将它拖到那个大小.当然有一些陷阱:
"se"
轴是假设你想在右下角调整大小-我选择这个,因为它是迄今为止最常见的场景,但你可以只是使它成为一个参数.您可以在行动中发挥它在这里小提琴和在resizeBy
这里的版本.
原始答案:
你可以这样做:
$(".selector").trigger("resize");
Run Code Online (Sandbox Code Playgroud)
alsoResize
内部装配了resize
事件的处理程序,所以你只需要调用:)
您可以通过程序触发条形图。例如,要触发东西方调整大小事件:
var elem =... // Your ui-resizable element
var eastbar = elem.find(".ui-resizable-handle.ui-resizable-e").first();
var pageX = eastbar.offset().left;
var pageY = eastbar.offset().top;
(eastbar.trigger("mouseover")
.trigger({ type: "mousedown", which: 1, pageX: pageX, pageY: pageY })
.trigger({ type: "mousemove", which: 1, pageX: pageX - 1, pageY: pageY })
.trigger({ type: "mousemove", which: 1, pageX: pageX, pageY: pageY })
.trigger({ type: "mouseup", which: 1, pageX: pageX, pageY: pageY }));
Run Code Online (Sandbox Code Playgroud)
我在东栏手柄上向左移动1px,向右移动1px。要执行完整尺寸,可以确定.ui-resizable-handle.ui-resizable-se
是否具有东部和南部尺寸调整条。
归档时间: |
|
查看次数: |
27204 次 |
最近记录: |