簡體   English   中英

如何使所有 contenteditable 子元素可拖動?

[英]How to make all contenteditable child elements draggable?

我只是想要一個 function ,它允許使用 jQuery (沒有外部 jQuery 插件)拖動所有 contenteditable 子元素。

我在這里找到了這段有用的代碼如何在 jQuery 中使元素可拖動? .

    function draggable(e){
    window.my_dragging = {};
    my_dragging.pageX0 = e.pageX;
    my_dragging.pageY0 = e.pageY;
    my_dragging.elem = this;
    my_dragging.offset0 = $(this).offset();
    function handle_dragging(e){
        var left = my_dragging.offset0.left + (e.pageX - my_dragging.pageX0);
        var top = my_dragging.offset0.top + (e.pageY - my_dragging.pageY0);
        $(my_dragging.elem)
        .offset({top: top, left: left});
    }
    function handle_mouseup(e){
        $('body')
        .off('mousemove', handle_dragging)
        .off('mouseup', handle_mouseup);
    }
    $('body')
    .on('mouseup', handle_mouseup)
    .on('mousemove', handle_dragging);
}

只需鍵入$('.div').on("mousedown", draggable);就可以在任何元素上進行拖動。

我還在這里找到了這段有用的代碼防止 contenteditable 添加 <div> on ENTER - Chrome

    $('div[contenteditable]').keydown(function(e) {
    // catch the enter key being pressed
    if (e.keyCode === 13) {
      $(this).find("*").off("mousedown.drag").on("mousedown.drag", draggable);
    }
  });

我打算將 function 附加到 contenteditable 在用戶按下回車鍵以使其可拖動時創建的所有子元素。

有人可以幫忙嗎?

我推薦使用 jQuery UI 的可拖動功能:

  <script>
      $(function() {
          $("div[contenteditable]").draggable();
      });
  </script>

它非常簡單,如果您想避免使用 jQuery UI 的未使用功能使您的頁面超載,您可以取消選擇 jQuery UI 下載部分中的組件以減少它以滿足您的需求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM