当前位置: 首页 > 知识库问答 >
问题:

Jquery UI可拖动/可排序,无需按住鼠标按钮

蒯硕
2023-03-14

我在整个网站上寻找解决方案,但是没有找到任何东西。我面临一个问题,我需要重做拖拽的风格。我正在为可拖动/可排序部分使用jquery ui。但是,我需要创建一个新的行为:即,我单击处理程序,释放左按钮,使用mousemove,元素将粘在光标上,再次单击,元素将掉落。总的来说,我需要在拖动过程中禁用mousedown部分。

编辑:

好的,这里是一个简单的可排序示例。我需要的是,当我点击手柄时。文章标题,它会粘在鼠标上而不按住鼠标向下。因此,换句话说,我需要一种行为,我可以让句柄类在单击它时处于活动状态,但在第一次mouseup时仍然处于活动状态,然后使用mousemove拖动它,而不实际按住mousedown,在其他单击时,它将下降。

$(".articles:not(.nosort)").sortable({
    handle : '.article-header',
    placeholder: "ui-state-highlight",
    update : function (ev,that) {
    var
        order = $(ev.target).sortable('serialize');
        //Saving the order to db
    }
});


<ul class="articles" data-handler="articles">

        <li id="article-list_1">
            <div class="article-header">
                <h4>Lorem Ipsum 1</h4>
            </div>
        </li>
    <li id="article-list_2">
            <div class="article-header">
                <h4>Lorem Ipsum 2</h4>
            </div>
        </li>
    <li id="article-list_3">
            <div class="article-header">
                <h4>Lorem Ipsum 3</h4>
            </div>
        </li>
    <li id="article-list_4">
            <div class="article-header">
                <h4>Lorem Ipsum 4</h4>
            </div>
        </li>
    <li id="article-list_5">
            <div class="article-header">
                <h4>Lorem Ipsum 5</h4>
            </div>
        </li>

</ul>

http://jsfiddle.net/s2x2n/

共有1个答案

赏夕
2023-03-14

我研究了一下$.ui.mouse小部件是如何工作的,我发现这个解决方案基本上很简单。

我扩展了mouseMove和mouseUp的原型。首先,我不需要检查鼠标向下移动时是否有任何距离。

其次,我已经评论了这一部分,其中它们在调用mouseup事件后解除绑定mousemove。因此,您只需要取消绑定mousemove事件,例如在可排序小部件的更新事件中。

我不确定,这是否是正确的方法,但是,如果有人有更好的建议,我将很高兴批准他们的答案。

$.ui.mouse.prototype._mouseMove = function(event) {
        // IE mouseup check - mouseup happened when mouse was out of window
        if ($.ui.ie && !(document.documentMode >= 9) && !event.button) {
            return this._mouseUp(event);
        }

        if (this._mouseStarted) {
            this._mouseDrag(event);
            return event.preventDefault();
        }

        // if (this._mouseDistanceMet(event) && this._mouseDelayMet(event)) {
            this._mouseStarted =
                (this._mouseStart(this._mouseDownEvent, event) !== false);
            (this._mouseStarted ? this._mouseDrag(event) : this._mouseUp(event));
        // }
        return !this._mouseStarted;
    }
 $.ui.mouse.prototype._mouseUp = function(event) {
        $(document)
            // .unbind('mousemove.'+this.widgetName, this._mouseMoveDelegate)
            .unbind('mouseup.'+this.widgetName, this._mouseUpDelegate);

        if (this._mouseStarted) {
            this._mouseStarted = false;

            if (event.target === this._mouseDownEvent.target) {
                $.data(event.target, this.widgetName + '.preventClickEvent', true);
            }

            this._mouseStop(event);
        }

        return false;
    }

可排序更新功能

update : function (ev,that) {
    $(document).unbind('mousemove.'+$.ui.sortable.prototype.widgetName, $.ui.mouse.prototype._mouseMoveDelegate);
}
 类似资料:
  • 所以我有下面的jQuery: 当我将项目拖到这个排序表中的“坏”地方(在那里它们不能被排序,例如在可排序区域之外)时,克隆会恢复到它在可排序表中的最后一个好位置。当这个动画完成时,停止函数会关闭“停止”。 是否有一个我可以使用的事件,它会在鼠标按钮释放后立即触发?(或在此还原动画开始之前?)

  • 本文向大家介绍ios可拖动按钮实例,包括了ios可拖动按钮实例的使用技巧和注意事项,需要的朋友参考一下 最近产品抽风,想做许鲜网的那个小客服按钮,虽然没啥难度,但是我懒啊,哈哈,上度娘搞了一个,但是点击事件和拖动重复了,擦。干脆写一个吧,仅供参考。 话不多说,上代码: 以上这篇ios可拖动按钮实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 我试图将jQuery可拖动、可拖放和可排序相结合;然而,我一直有问题。有人能帮帮我吗? A、 B、C、D、E瓷砖可在上部可放下和可分拣之间移动 此外,我正试图在必要时在任何位置停用和重新激活所有这些。 这是我的,但它很有缺陷,也不漂亮: JS 超文本标记语言

  • 实际上,我想对对象数组列表进行排序。我正在为此目的使用可比接口。它是完全有效的,但问题是,当我排序的时候,是给这两个问题。 > 所有名字中有第一个字母大写的都在上面,所有名字中有第一个字母小写的都在下面。 所有排序的大写字母单词都在一起,然后所有的小写字母单词都在一起。

  • 问题内容: 我正在开发JavaFX项目,并且需要类似于表征 “按下并按住”事件的东西 。但是应该将其映射为一个,因为我在Linux上的触摸事件遇到了麻烦。例如,在Ubuntu中,它不会响应触摸事件。 请让我知道,如果你对如何触发一个任何想法 每当 “按住” 在Linux上出现? 问题答案: 只需将a 用作“保持”的计时器即可。如果按下鼠标,则将其启动;如果释放或拖动,则将其停止。

  • 问题内容: 我正在尝试使用排序对象列表 但是,如果任何列表项包含而不是, 然后我得到一个 在Py2中,这不是问题。如何在Py3中处理此问题? 问题答案: 排序比较运算符约在Python 3种严格,如描述在这里: 当操作数没有有意义的自然顺序时,顺序比较运算符(<,<=,> =,>)会引发TypeError异常。 Python 2在任何字符串(甚至是空字符串)之前进行排序: 在Python 3中,任