Selectable - 选择后,元素改变其外观

Posted

技术标签:

【中文标题】Selectable - 选择后,元素改变其外观【英文标题】:Selectable - after selection, element changes it's apperance 【发布时间】:2019-09-29 10:41:57 【问题描述】:

我有一个带有可拖动 - 可克隆元素的小例子。必须先将每个元素从左上角拖到可放置区域(下面的 div)。

我想用蓝色标记所有选定的元素。当它们不再被选中时,我想将颜色恢复为黄色。

我改变所选元素的颜色:

selected: function(event, ui)
      $(ui.selected).css('background-color', 'blue');
    ,

对于所有未选中的元素,代码相同,只是颜色不同:

unselected: function(event, ui)      
  $(ui.unselected).css('background-color', 'yellow');

基本上一切正常 - 唯一的问题是元素在选择后更改 - 取消选择。

原貌:

选择后 - 更宽:

取消选择后 - 它是黄色的,但更宽:

为什么它越来越宽?我唯一改变的是背景颜色。

整个例子是here

【问题讨论】:

【参考方案1】:

不是你的 div 变宽了,而是你的可调整大小的添加句柄使它看起来更宽。当您从脚本中删除所有可调整大小的功能时,您不会看到这种效果。

编辑脚本的这一部分:

 function setResizable(el)
     el.resizable(
     );
 

=>

function setResizable(el)
    el.resizable(
        autoHide: "true"
    );

【讨论】:

我明白这一点,但我需要可调整大小的功能。我无法删除它。 我编辑了答案并提供了一些代码来隐藏句柄。【参考方案2】:

解决方案是仅在父级上设置背景颜色。

 $(ui.selected).closest('.component').css('background-color', 'blue');

这样,可调整大小元素的句柄并没有改变。

【讨论】:

以上是关于Selectable - 选择后,元素改变其外观的主要内容,如果未能解决你的问题,请参考以下文章

Jquery UI Selectable - 选择多个元素

使用CSS3的appearance属性改变元素的外观

在jquery selectable中拖动非选定的div

改变表单元素的外观

在 jQuery UI Selectable 中启用 Shift-Multiselect

如何随时间改变元素的外观?