如何为可调整大小的jQuery UI元素启动调整大小功能(触发句柄拖动)

Mat*_*att 5 javascript jquery resize jquery-ui event-handling

当前单击屏幕时动态创建可调整大小的元素mousedown.

jQuery UI自动添加句柄以允许用户单击并拖动以随后调整元素的大小.

我想触发句柄,这样只要用户没有触发,mouseup他们就已经在调整新创建的元素的大小.

我在文档中找不到任何显示在单击这些句柄时触发哪些事件的内容.我已经尝试在创建元素之后执行mousedownclick在句柄上,放置在屏幕上,并设置为resizable.这些都没有奏效.

有谁知道如何触发调整大小动作的开始?或者,如果有人知道如何记录jQuery UI事件,我可以使用它来查看单击句柄时发生的操作,遵循相同的路径,并在此处发布我的结果.

huy*_*itw 6

Michael L的答案中的小提琴涵盖了必需品,但仍然包含一些错误/限制.因此我在这里添加我的修改版本作为答案.

HTML

<div id='container'></div>
Run Code Online (Sandbox Code Playgroud)

CSS

#container {
    position: relative;
    width: 500px;
    height: 500px;
    background-color: #eee;
}

.block {
    position: absolute;
    width: 5px;
    height: 5px;
    background-color: red;
    opacity: 0.2;
}
Run Code Online (Sandbox Code Playgroud)

JavaScript的

$("#container").on("mousedown", function(event){
    if (event.target !== this) {
        return;
    }
    var $target = $(event.target),
        $block = $("<div />")
            .addClass("block")
            .css({
                top: event.pageY - $target.offset().top,
                left: event.pageX - $target.offset().left
            })
            .resizable()
            .draggable({ containment: $target });
    $target.append($block);
    simulateHandleEvent($block, "se", event);
})

function simulateHandleEvent($item, handle, event){
    $item.find(".ui-resizable-" + handle)
        .trigger("mouseover")
        .trigger({
            type: "mousedown", 
            which: 1,
            pageX: event.pageX,
            pageY: event.pageY
    });
}
Run Code Online (Sandbox Code Playgroud)

看看这个JSFiddle


Mic*_* L. 3

我遇到了同样的问题,终于找到了答案。您必须向该函数传递附加信息trigger()。请参阅JS Fiddle