受原始元素上的 css 更改影响的 Jquery 可拖动助手

Posted

技术标签:

【中文标题】受原始元素上的 css 更改影响的 Jquery 可拖动助手【英文标题】:Jquery draggable helper affected by css changes on original element 【发布时间】:2021-07-11 09:46:12 【问题描述】:

我正在使用 JQuery UI 来启用对某些元素的拖放。 我的问题是拖放功能的助手会受到原始拖动元素更改的影响。 例如,如果原始元素在拖动过程中获得可见性:hidden/display:none,则助手也会消失。 如果我翻译原始元素也是一样,助手也会被翻译。 在我的情况下,我使用 helper: 'clone'function 为帮助程序创建一个全新的 dom 元素。

我只是想在开始拖动时隐藏一个面板,这样它就不会覆盖其他元素,但是这样做拖动助手会遇到问题。

对如何解决这个问题有任何想法吗? 谢谢指教

编辑:我注意到我真正的问题是拖动元素的父亲的样式更改导致了问题:

示例:https://codepen.io/Ciappone/pen/mdRKoXX

<div class="test">
  <i class="original fas fa-save"></i>
</div>

.dragging
  transform: translateY(200px);


.test
  transition: transform 1s linear;


$('document').ready(function(event)


$('.original').draggable(
    cursor: 'grab',
    helper:function()
      let el = document.createElement('i');
      el.className ='fas fa-times';
      return el;
    ,
    start: function(event)
      $('.test').toggleClass('dragging');
    ,
    stop: function(event)
      $('.test').toggleClass('dragging');
    
  )
);

在示例中,我正在拖动一个图标,当我开始拖动时,我将父亲向下平移 200 像素,拖动助手做同样的事情,我不希望这种行为,我只是希望它保持连接指针

【问题讨论】:

你有一些代码 您需要发布您的代码以供他人帮助。 @frogcoder 添加了代码和更多细节 拖动时是否要隐藏.test.original @frogcoder 我想隐藏/翻译.test 但我不希望拖动助手(“x”图标)做同样的事情,我希望它保持与指针的连接通常的拖放 【参考方案1】:

执行以下操作以在拖动时隐藏软盘图标:

    修改.dragging样式为visibility:hidden 添加适用于helper 创建的元素的样式。 .test.dragging i.fa-times visibility: visible;

最终的css是这样的

.dragging
  visibility: hidden;

  
.test
  transition: transform 1s linear;


.test.dragging i.fa-times 
  visibility: visible;

【讨论】:

以上是关于受原始元素上的 css 更改影响的 Jquery 可拖动助手的主要内容,如果未能解决你的问题,请参考以下文章

如何复制不受原始 ArrayList 更改影响的 ArrayList? [复制]

两个单独的单击功能上的备用 css 更改

悬停上的 CSS 以影响另一个容器中的元素(引导卡)

CSS 过渡属性覆盖 SVG 元素上的 jQuery 动画时间

jQuery基础学习

jQuery更改悬停在颜色上,然后返回原始颜色