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

在Firefox的边栏或开发者面板上释放鼠标按钮时,如何让jQuery UI“放开”可拖动或可排序的元素?

宋子辰
2023-03-14

我正在开发一个网络应用程序,允许用户通过jQuery UI Sortable和Droppable小部件重新排序和删除屏幕上的项目。最初,我只提供了一种删除项目的方法:将其拖到带有垃圾图标的区域并将其删除。现在,我添加了一个选项,通过将项目从屏幕边缘拖动并释放鼠标按钮来删除它。

这个新功能(通过在屏幕外拖动删除)的设置比我预期的要复杂一些,但我最终解决了大部分问题。有一件事仍然困扰着我:在Firefox中,当浏览器中除了主浏览器窗口之外还有其他“面板”时,拖放功能会出现问题——例如,书签侧栏(我通常固定在左侧)和开发工具(我通常固定在右侧或底部)。如果我拾取一个可排序的元素,将其拖到其中一个面板后面,然后释放鼠标按钮,jqueryui将继续“保持”该元素(即,继续拖动)。

如何重现问题:

  1. 转到jQuery UI可排序页面
  2. 按[control-B]显示Firefox的书签侧边栏
  3. 抓取一个可排序的项目,将其拖到书签侧栏上,然后释放鼠标按钮
  4. 将鼠标移回项目所在的框。您将看到,即使不再按住鼠标按钮,该项目仍像被拖动一样粘在鼠标上

期望的行为:我希望Sortable小部件释放可排序项,就像将指针完全移出浏览器并释放鼠标按钮一样。

请注意,这个问题是Firefox特有的。(我正在运行Firefox 51.0.1。)谷歌浏览器没有同样的问题。(当我将Google Chrome中的开发人员工具停靠在底部或右侧时,我可以在开发人员工具区域上发布可排序的项目,并获得所需的行为。)我还没有在IE、Safari或其他浏览器中进行测试。

提前感谢您的帮助!

共有1个答案

葛修筠
2023-03-14

嗯,几年前我遇到了这个问题。如果光标离开身体,我通常会强制释放光标。

以下是可拖动的解决方案:

var flag=true;
start: function( event, ui ){
    if(flag){
         flag = false;
         $('body').one("mouseleave", function(){
             $('body').one("mouseup", function(){
                 flag = true; //event occured, rebind
                 //do your stuff
              });
          });
     }
     else{
         flag = false;
     }
}

这是问题的链接

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

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

  • 我正在尝试实现jQuery可排序和拖放上传的组合。基本布局是使用jQuery sortable对图像/对象进行排序的网格。通过拖动图像,我可以按照我想要的任何顺序重新排列图像。同时,我可以通过拖放包含网格的div上的任意位置,从文件系统上载新图像,并且图像在完成上载后显示在网格上的第一个位置。现在,我想让用户能够将文件拖到网格中的任何位置,然后将上载的图像显示在网格上的特定位置(同时相应地重新排列

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

  • 我有一个非常奇怪的问题,当我把一个项目从计划外的游戏桶拖到一个网格中时,你可以看到可拖动的项目被切断,大约80%的时间都是在这个区域上拖动的。 当计划外游戏中的项目溢出时,滚动条会出现这种情况。否则,拖动时不会切断。在网格中的游戏之间也可以找到拖放工作。 这只发生在Chrome中。Firefox和Edge运行良好。我真的不知道要显示什么JS或CSS,因为它可以是任何东西。 另外,当我像下面的屏幕一

  • 问题内容: 在AngularJS中的元素 上是否易于使用 ? 如果重新排序项目会很棒,那就是将自动传播的订单重新排列到源数组中。恐怕这两个系统会打架。有一个更好的方法吗? 问题答案: Angular UI具有可排序的指令,请单击此处进行演示 位于ui-sortable的代码,用法: