元素在拖动后变得随机不可调整大小

2023-12-13

选择并拖动多个元素后,其中一些元素不再可调整大小:调整大小图标从右上角消失。

可调整大小的图标保留在旧位置,并且不会移动已移动的元素。

要重现,请运行下面的代码,使用套索选择所有元素并拖动选定的元素。之后,调整大小图标将从随机元素中消失,并且这些元素不再可拖动。

如何解决这个问题?

我试图通过添加来解决这个问题

$(".designer-verticalline, .designer-rectangle, .designer-field, .designer-image").resizable();

到拖拽()方法结束但问题仍然存在

也报道于

https://bugs.jqueryui.com/ticket/14898#ticket

fiddle: https://jsfiddle.net/txbcj9qy/

<!DOCTYPE html>
<html>

<head>
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
  <link rel="stylesheet" href="http://code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
  <style>
    .designer-panel-body {
      min-height: 1px;
      overflow: hidden;
      margin: 0;
      padding: 0;
    }
    .panel-footer {
      background-color: inherit;
    }
    .designer-panel,
    .designer-resetmargins {
      margin: 0;
      padding: 0;
    }
    .designer-verticalline,
    .designer-horizontalline,
    .designer-rectangle {
      font-size: 1pt;
      border: 1px solid #000000;
    }
    .designer-field {
      border: 1px solid lightgray;
      white-space: pre;
      overflow: hidden;
    }
    .ui-selecting {
      background-color: lightskyblue;
      color: white;
    }
    .ui-selected {
      background-color: lightskyblue;
      border-color: darkblue;
      color: white;
    }
    .designer-label {
      white-space: pre;
      /*overflow: hidden;*/
    }
    .designer-field,
    .designer-label {
      font-family: "Times New Roman";
      font-size: 10pt;
      z-index: 2;
    }
    .designer-verticalline,
    .designer-horizontalline,
    .designer-rectangle,
    .designer-field,
    .designer-image,
    .designer-label {
      position: absolute;
    }
  </style>
  <script src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
  <script src="http://code.jquery.com/ui/1.11.4/jquery-ui.js"></script>

  <script>
    function getpos(e) {
      return {
        X: e.pageX,
        Y: e.pageY
      };
    }

    function Rect(start, stop) {
      this.left = Math.min(start.X, stop.X);
      this.top = Math.min(start.Y, stop.Y);
      this.width = Math.abs(stop.X - start.X);
      this.height = Math.abs(stop.Y - start.Y);
    }

    $(function() {
      var startpos;
      var selected = $([]),
        offset = {
          top: 0,
          left: 0
        };
      $(".designer-verticalline, .designer-rectangle, .designer-field, .designer-image").resizable();

      // http://stackoverflow.com/questions/705250/is-there-a-jquery-plugin-which-combines-draggable-and-selectable#8643716
      // teha: seal on ka mousedown mis andis viga, kaseda kasutada
      var $liigutatavad = $(".designer-verticalline, .designer-horizontalline, .designer-rectangle, .designer-field, .designer-image, .designer-label");
      $liigutatavad.draggable({
        start: function(event, ui) {
          var $this = $(this);

          if ($this.hasClass("ui-selected")) {
            // if this is selected, attach current offset
            // of each selected element to that element
            selected = $(".ui-selected").each(function() {
              var el = $(this);
              el.data("offset", el.offset());
            });
          } else {
            // if this is not selected, clear current selection
            selected = $([]);
            $liigutatavad.removeClass("ui-selected");
          }
          offset = $this.offset();
        },

        drag: function(event, ui) {
          // drag all selected elements simultaneously
          var dt = ui.position.top - offset.top,
            dl = ui.position.left - offset.left;
          selected.not(this).each(function() {
            var $this = $(this);
            var elOffset = $this.data("offset");
            $this.css({
              top: elOffset.top + dt,
              left: elOffset.left + dl
            });
          });

          // this does not fix the issue:
          //$(".designer-verticalline, .designer-rectangle, .designer-field, .designer-image").resizable();
        }
      });

      // ...but manually implement selection to prevent interference from draggable()
      $(".designer-panel-body").on("click", "div", function(e) {
        if ( /*!e.metaKey &&*/ !e.shiftKey && !e.ctrlKey) {
          // deselect other elements if meta/shift not held down
          $(".designer-panel-body").removeClass("ui-selected");
          $(this).addClass("ui-selected");
        } else {
          if ($(this).hasClass("ui-selected")) {
            $(this).removeClass("ui-selected");
          } else {
            $(this).addClass("ui-selected");
          }
        }

        //var selectable = $("#container").data("selectable");
        //selectable.refresh();
        //$( ".designer-panel-body" ).data("selectable")._mouseStop(null);
      });

      $(".designer-panel-body").selectable({});
    });
  </script>

</head>

<body>
  <div class='panel designer-panel'>
    <div class='panel-body designer-panel-body panel-warning' style='height:9.37cm'>

      <div class='designer-field' contenteditable='true' style='top:2.30cm;left:5.84cm;width:10.24cm;height:0.63cm;font-family:Arial;font-size:14pt;font-weight:bold;'>vnimi+&#39; &#39;+dok.tasudok</div>
      <div class='designer-field' contenteditable='true' style='top:2.30cm;left:16.37cm;width:2.68cm;height:0.61cm;font-size:14pt;'>DOK.kuupaev</div>
      <div class='rectangle' style='border-width: 1px;background-color:#FFFFFF;top:2.99cm;left:1.34cm;width:18.05cm;height:5.29cm'></div>
      <div class='designer-field' contenteditable='true' style='top:3.01cm;left:1.53cm;width:9.71cm;height:0.55cm;font-size:12pt;'>m.FIRMA</div>
      <div class='designer-field' contenteditable='true' style='top:3.01cm;left:12.13cm;width:3.13cm;height:0.53cm;font-size:12pt;'>ise.telefon</div>
      <div class='designer-field' contenteditable='true' style='top:3.01cm;left:17.11cm;width:1.89cm;height:0.55cm;font-size:12pt;text-align:right;'>ise.regnr</div>
      <div class='designer-label' contenteditable='true' style='top:3.04cm;left:11.39cm;text-align:right;font-size:12pt;'>Tel.</div>
      <div class='designer-label' contenteditable='true' style='top:3.04cm;left:15.71cm;font-size:12pt;'>Reg.Nr</div>
      <div class='designer-field' contenteditable='true' style='top:3.62cm;left:1.55cm;width:9.45cm;height:0.55cm;font-size:12pt;'>ise.tanav</div>
      <div class='designer-field' contenteditable='true' style='top:3.70cm;left:15.16cm;width:3.37cm;height:0.55cm;font-size:12pt;'>ise.vatpayno</div>
      <div class='designer-label' contenteditable='true' style='top:3.72cm;left:12.89cm;text-align:right;font-size:12pt;'>KMKR nr</div>
      <div class='designer-field' contenteditable='true' style='top:4.30cm;left:1.58cm;width:9.08cm;height:0.55cm;font-size:12pt;'>rtri(ise.postiindek)+&#39; &#39;+rtri(ise.piirkond)</div>
      <div class='designer-field' contenteditable='true' style='top:4.30cm;left:14.66cm;width:4.34cm;height:0.55cm;font-size:12pt;text-align:right;'>aarve(dok.arvekonto, &#39;konto.arveldusar&#39;)</div>
      <div class='designer-label' contenteditable='true' style='top:4.33cm;left:13.89cm;font-size:12pt;'>A/A</div>
      <div class='designer-horizontalline' style='border-width: 1px;top:4.96cm;left:1.34cm;width:18.03cm;height:0.00cm'></div>
      <div class='designer-field' contenteditable='true' style='top:5.04cm;left:17.13cm;width:1.89cm;height:0.55cm;font-size:12pt;text-align:right;'>klient.regnr</div>
      <div class='designer-field' contenteditable='true' style='top:5.06cm;left:4.18cm;width:12.71cm;height:0.55cm;font-size:12pt;'>klient.nimi</div>
      <div class='designer-label' contenteditable='true' style='top:5.06cm;left:15.74cm;font-size:12pt;'>Reg.Nr</div>
      <div class='designer-label' contenteditable='true' style='top:5.09cm;left:1.63cm;font-size:12pt;'>Maksja</div>
      <div class='designer-field' contenteditable='true' style='top:5.72cm;left:1.53cm;width:11.68cm;height:0.55cm;font-size:12pt;'>klient.tanav</div>
      <div class='designer-field' contenteditable='true' style='top:5.72cm;left:15.18cm;width:3.37cm;height:0.55cm;font-size:12pt;'>klient.vatpayno</div>
      <div class='designer-label' contenteditable='true' style='top:5.75cm;left:12.92cm;text-align:right;font-size:12pt;'>KMKR nr</div>
      <div class='designer-field' contenteditable='true' style='top:6.38cm;left:1.53cm;width:11.84cm;height:0.55cm;font-size:12pt;'>rtri(klient.postiindek)+&#39; &#39; +rtri(klient.piirkond)</div>
      <div class='designer-field' contenteditable='true' style='top:6.38cm;left:13.47cm;width:3.37cm;height:0.55cm;font-size:12pt;'>sql(&quot;sele transfld(&#39;nimetus&#39;, &#39;riik&#39;, rapopref()) from riik where kood=klient.riik2&quot;, &#39;&#39; )</div>
      <div class='designer-field' contenteditable='true' style='top:6.99cm;left:3.71cm;width:12.16cm;height:1.16cm;font-size:12pt;'>klient.aadress</div>
      <div class='designer-label' contenteditable='true' style='top:7.01cm;left:1.45cm;text-align:right;font-size:12pt;'>Postiaadress</div>
      <div class='designer-field' contenteditable='true' style='top:8.33cm;left:3.95cm;width:2.11cm;height:0.55cm;font-size:12pt;'>dok.tasukuup</div>
      <div class='designer-field' contenteditable='true' style='top:8.33cm;left:6.08cm;width:8.05cm;height:0.55cm;font-size:12pt;'>eval( &#39;maksetin.&#39; +left(rapopref()+&#39;tingimus&#39;,10))</div>
      <div class='designer-label' contenteditable='true' style='top:8.35cm;left:1.45cm;font-size:12pt;'>Makset&#228;htaeg</div>
      <div class='designer-field' contenteditable='true' style='top:8.91cm;left:1.45cm;width:13.66cm;height:0.45cm;'>iif(!empty(dok.saaja), IR(&quot;Saaja: &quot;)+sql(&#39;sele rtri(nimi)+&quot; &quot;+rtri(tanav)+&quot; &quot;+rtri(piirkond)+&quot; &quot;+rtri(postiindek) from klient where kood=dok.saaja&#39;,&#39;&#39;),&#39;&#39;)</div>
    </div>
    <div class='bg-warning'>
      <div class='panel-footer'><i class='glyphicon glyphicon-chevron-up'></i> GroupHeader 1: str(dokumnr)+str(koopia,2)</div>
    </div>
  </div>
</body>

</html>

问题是可调整大小的图标也是可选的,因此当您将它们包含在套索中时,它们会被选中并且它们的top and left当您拖动时会发生变化。

Selectable has a filter option允许指定哪些元素应该是可选的。通过将其设置为'.designer-field'它应该可以解决问题。

$(".designer-panel-body").selectable({
    filter: '.designer-field'
});

See: https://jsfiddle.net/kec4jgvf/1/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

元素在拖动后变得随机不可调整大小 的相关文章

  • 实现悬停信息框

    我有一个日历 当用户将鼠标悬停在单元格上时 会出现一个很大的信息框 其中包含该日期的详细信息 虽然当用户离开时使信息框消失 但我遇到了一些麻烦 我基本上想要它 这样当鼠标光标移出信息框隐藏的日历单元格时 它就会消失 但我遇到了麻烦 因为mo
  • jQuery 检查字体粗细是正常还是粗体

    我使用以下代码设置 font weight 属性 this css font weight normal 现在我想检查一个元素是否具有粗体或正常的字体粗细属性 我该怎么做 你可以使用以下方法得到它 fontWeight this css f
  • 使用命名的成功/错误回调在 AngularJS 中声明一个 Promise

    我正在尝试做一些与 http 服务非常相似的事情 根据我的理解 http 返回一个 Promise 对象 使用它时 语法是 http success function data success callback error function
  • 无法读取未定义的“触及”属性

    为什么我会收到此错误无法读取未定义的属性 为什么无法读取formName controls email touched但它能够阅读formName get custDetails touched
  • 在动态创建的元素上添加事件监听器[重复]

    这个问题在这里已经有答案了 是否可以向所有动态生成的元素添加事件侦听器 Javascript 我不是页面的所有者 因此我无法以静态方式添加侦听器 对于页面加载时创建的所有元素 我使用 doc body addEventListener cl
  • 游戏手柄 JavaScript 未能按预期更新

    我正在尝试让浏览器报告我的 XBOX 控制器的状态 然而 在第一次按下按钮后 它似乎变得 卡住 我究竟做错了什么
  • 为什么我们使用 SpreadsheetApp.flush()?

    我的理解是 flush https developers google com apps script reference spreadsheet spreadsheet app flush有助于在功能发生时执行这些功能 而无需将它们捆绑在
  • 如何循环遍历对象数组并生成键值对?

    我有一个像这样的对象数组 let someObj items id 12 value true id 34 value true id 56 value false 我想将其添加到现有对象中 其中 id 是该对象的键 如下所示 let ob
  • 带有 mkdocs 的本地 mathjax

    我想在无法访问互联网的计算机上使用 MathJax 和 Mkdocs 因此我不能只调用 Mathjax CDN Config mkdocs yml site name My Docs extra javascript javascripts
  • 发送 POST 请求时 JSON 原语无效

    我有以下 ajax 请求 其中我尝试将 JSON 对象发送到服务器 function sendData subscriptionJson ajax type POST url Url Action SubscribeSecurities S
  • 如何知道浏览器空闲时间?

    如何跟踪浏览器空闲时间 我用的是IE8 我没有使用任何会话管理 也不想在服务器端处理它 这是纯 JavaScript 方法来跟踪空闲时间 并在达到一定限制时执行一些操作 var IDLE TIMEOUT 60 seconds var idl
  • 将 onclick 事件应用于页面加载时不存在的元素

    我将列表样式设置为看起来像选择框 并且当用户单击列表中的元素时我想触发一个函数 但是该元素是通过加载的AJAX因此 当页面加载并且我无法绑定时不存在onclick事件到它onDomReady 如果我把它作为一个普通的选择列表 我可以只标记一
  • 将 window.location 传递给 Flask url_for

    我正在使用 python 在我的页面上 当匿名用户转到登录页面时 我想将一个变量传递到后端 以便它指示用户来自哪里 发送 URL 因此 当用户单击此锚链接时 a href Sign in a 我想发送用户当前所在页面的当前 URL
  • 有没有办法伪造同步 XHR 请求?

    我正在使用 Emscripten 系统将一堆 C 代码移植到 Javascript C 代码有很多调用fopen这是一个同步 IO 调用 在 Emscripten 中 我们使用对本地资源的 XHR 请求来模拟这一点however 在 Fir
  • JavaScript 中的实时摩尔斯电码转换器

    在看到谷歌关于莫尔斯电码 gmail 的愚人节笑话后 我想我应该尝试用 javascript 创建一个实时莫尔斯电码转换器 我正在使用正则表达式和替换将莫尔斯电码更改为字符 例如 replace g a replace g r 我遇到的问题
  • 是否可以将请求标头添加到 CORS 预检请求中?

    我有一个从外部服务器 不是服务器 访问 API 的网站 为网站提供服务 通过简单的XmlHttpRequest 见下文 那个API 需要将用于访问服务的 API 密钥添加为请求标头 然而 正如这些CORS https developer m
  • 不使用控件时,视频元素在 Chrome 中消失

    So I think这是一个浏览器错误 它出现在一个更复杂的设计 网站中 但我已经进行了很好的尝试 简化了我的代码和设计等 并发现了以下内容 嵌入时
  • Javascript 中 if 语句中的假值?

    过去两周 我在学校研究 JavaScript 的事情已经有一段时间了 而且我一直在做我的作业 在 Douglas Crockford 所著的 JavaScript The Good Parts 一书中 作者在第 11 页上列出了 if 语句
  • 如何:带有 onclick 的 div 位于另一个带有 onclick 的 div 中

    只是一个简单的问题 我遇到了 div 与 onclick javascript 之间的问题 当我点击内部 div 时 它应该只触发它的 onclick javascript 但外部 div 的 javascript 也会被触发 用户如何点击
  • DOM 解析器 Chrome 扩展内存泄漏

    问题 我开发了一个扩展程序 可以拦截 Web 请求 获取 Web 请求来源的 HTML 并对其进行处理 我使用 DOMParser 来解析 HTML 并且意识到 DOMParser 正在导致大量内存泄漏问题 最终导致 chrome 扩展崩溃

随机推荐

  • 获取 R 中每组的最后一行[重复]

    这个问题在这里已经有答案了 我有一些结构类似于 a lt data frame ID c A A B B C C NUM c 1 2 4 3 6 9 VAL c 1 0 1 0 1 0 我正在尝试对其进行排序ID and NUM然后得到最后
  • 有效删除 NumPy 中的行

    我有一个很大的 numpy 数组 其中有很多 ID 值 称之为 X X id rating 1 88 2 99 3 77 4 66 我还有另一个 坏ID 的numpy数组 它表示我想从X中删除的行 B 2 3 所以当我完成后 我想 X id
  • 如何在 Firebase 函数中获取提供程序访问令牌?

    我计划编写有关身份验证用户创建的 Firebase 函数 我的目标是获得 Facebook 用户页面的长期访问令牌 为此 我需要 Firebase 函数中的用户访问令牌 下面尝试过 exports saveLongLiveToken fun
  • 如何在 iOS 中检测视频文件是纵向录制还是横向录制

    我在用AlAssetsGroup enumerateAssetsAtIndexes列出照片 相机 应用程序中的资源 对于给定的视频资源 我想确定它是以纵向模式还是横向模式拍摄的 在下面的代码中 资产是AlAsset我已经测试过它是否是视频资
  • AWS VPC私有链接-API网关

    我有一个带有公有子网和私有子网的 VPC NLB 部署到私有子网 并且有 5 个侦听器 port 9000 forwarding to targetgroup 01 port 9001 forwarding to targetgroup 0
  • 为什么 nextjs 在构建时会在第一次加载时加载所有页面

    我在我的新网站中使用 nextJS 但 SEO 和网站的速度对我来说非常重要 我想做的是防止加载额外的资源文件 而我不需要它们 例如 当我在主页时 我不需要在后台加载常见问题解答或关于页面的资源 我是否可以阻止网站上的这些额外负载 先感谢您
  • 将自定义对象存储在 NSUserDefaults 中

    我试图按如下方式存储自定义对象 但出现错误 store data NSMutableArray archiveArray NSMutableArray arrayWithCapacity pOrderElements count for i
  • 细胞景观中折叠/扩张的复合节点

    cytoscape js 是否支持折叠 展开复合节点 Eg before collapsing node1 node1 1 node1 2 node1 2 1 崩溃后 node1 用于展开 折叠的 或 符号会很棒 寻找使用复合节点对一组节点
  • DataGridView 不允许用户删除行

    我有一个 DataGridView 如另一个问题 and AllowUserToDeleteRows被设定为true The docs比如说IBindingList AllowRemove还应该设置为true 然而List好像没有那个接口
  • 在 Weld/Seam3 应用程序上启动 POJO

    我试图在我的 Weld Seam3 应用程序中启动 POJO 但运气不佳 我尝试过以下方法 但没有一个起作用 Singleton public class StartupJobs Inject private Logger log publ
  • 扩展方法和 Razor 页面

    我在 app code 中定义了一个扩展方法 如下所示 public static class Extensions public static string Hi this object obj return hi 在剃刀页面 任何东西都
  • jQuery 隐藏元素,同时保留其在页面布局中的空间

    jQuery 中有没有一种方法可以隐藏元素 但在隐藏时不更改 DOM 我隐藏了某个元素 但是当它被隐藏时 它下面的元素会向上移动 我不希望这种事发生 我希望空间保持不变 但元素可以随意显示 隐藏 我可以这样做吗 代替hide use css
  • 匹配整个文档中的第一个元素? [复制]

    这个问题在这里已经有答案了 我想匹配整个文档中的第一个 H1 元素 然而 现在我面临着一个问题 我正在使用以下 CSS 选择器 h1 first child 但是 它与页面上的多个 H1 标签相匹配 我怎样才能让它只匹配第一个 没有这样的选
  • 如何在插入 RichEditBox 的图像中显示调整大小的装饰器?

    我正在尝试将调整大小的装饰器显示到插入到 UWP 应用程序的 RichEditBox 中的图像 到目前为止 我可以使用以下代码插入图像 private async void InsertImage var picker new FileOp
  • 从 Android 中以编程方式创建的父视图中查找子视图

    对于 Android 应用程序 我使用 GridView 并扩展 BaseAdapter 来组织其内容 对于我在扩展 BaseAdapter 类中重写的函数 getView 我创建了一个 LinearLayout 并在其中附加了一个 Ima
  • Android 模拟器和嵌套虚拟化

    我有个问题 我使用 hyper v 虚拟机来隔离开发过程 我在虚拟机上使用Windows 10 但我无法在我的虚拟机上安装虚拟机管理程序 如何在没有 hyper v 的情况下调试 xamarin forms 应用程序 Thanks 快速回答
  • 取消转义 mvc 应用程序返回的转义不可编码字符串的简单方法

    我已经检查了其他类似的问题 他们要么建议使用 WebUtility HtmlDecode 要么逐个字符替换编码部分 或者假设一些已知的正则表达式模式等 他们不回答这个特定的查询 我有一个 C 控制台应用程序 它将一些数据发送到 MVC 应用
  • 如何从 lldb 调试器类型切换到 gdb 调试器类型?

    我已经找了很长一段时间试图找出如何从 lldb 切换到 gdb 但找不到任何关于如何在 Xcode 6 1 中在两者之间切换的信息 我正在尝试调试我的应用程序 如果我使用 gdb 而不是 lldb 我也许能够弄清楚它 但我不知道它是否会对我
  • Material UI - 将图标作为道具传递

    我正在尝试通过 prop 将material ui 图标插入到我的组件中 请让我知道我做错了什么 但是 我不确定如何在 JSX 中传递图标 这是我的无效尝试 这个片段是我尝试将图标作为道具传递给类别组件
  • 元素在拖动后变得随机不可调整大小

    选择并拖动多个元素后 其中一些元素不再可调整大小 调整大小图标从右上角消失 可调整大小的图标保留在旧位置 并且不会移动已移动的元素 要重现 请运行下面的代码 使用套索选择所有元素并拖动选定的元素 之后 调整大小图标将从随机元素中消失 并且这