Jquery将div中的文本拖放到较小的div中

Posted

技术标签:

【中文标题】Jquery将div中的文本拖放到较小的div中【英文标题】:Jquery Drag and Drop with text in div into smaller div 【发布时间】:2014-05-30 23:24:18 【问题描述】:

首先,我使用 Laravel 4,以及一些插件,如 Bootstrap、jQuery、jQuery-ui...

我对 jQuery UI 可拖动/可放置有问题。

我有一个满是 div 的表格,我不想改变它的大小。这是一个横向日历,左侧是天,顶部是小时。当我拖放一个只有“事件”作为文本的小“div”时,没关系。但是当我有一个像“非常大的事件标题”这样的文本时,div 在很多部分都被“分割”了(参见下面的 jsFiddle)。我希望能够调整事件的大小。例如,如果事件需要在上午 8:00 到下午 4:00 为“ON”,可拖动事件可以放在“8:00”列,并且可以调整为“4:00pm”...但是有了那个“分裂”的问题,我就做不到了。

for (var j = 0; j < 24; j++)
    $("#creneau"+i).append("<div class='creneau' id='creneau"+i+"-"+j+"' style='display: inline-block; float: left; margin 0; width: 40px; height: 20px; '></div>");
    $("#creneau"+i+"-"+j).droppable(
        appendTo: "body",
        tolerance: "pointer",
        accept: ".external-event",
        drop: function(event, ui)         
            $(this).append($(ui.draggable));
        
    );


$(".external-event").draggable(
    appendTo: "#hours-creneau",
    cursor: "move",
    helper: 'clone',
    revert: "invalid"
);

这里是所有代码的 jsFiddle 链接(有点大)。 Link to jsFiddle

我的标签在 jsFiddle 上确实“很大”,对此感到抱歉。您可能需要调整大小...

【问题讨论】:

只是提示,从指向 JsFiddle 的链接中删除 "See this fiddle for an example 是的,感谢 AnoopJoshi 编辑并删除了该错误。感谢@urbz 的提示 :-) 【参考方案1】:

我认为这只是一个样式问题。 为了避免“分裂”,正如你所说,只需添加样式

white-space: nowrap;

到事件元素。然后就不会分裂了。

【讨论】:

谢谢。在“droppable” div 上添加空格,而不是在“draggable” div 事件上,解决了这个问题。非常感谢!【参考方案2】:

如果我正确理解您想要什么,这似乎只是一个修复文本拆分的 CSS 问题。您的 span 标签的宽度包含在内,因此您需要将文本移动到内部的单独 span,或者在宽度上使用一些样式。

以下内容可能会让您走上正轨。

尝试给它一个指定的宽度(单元格的大小 - 40px 减去盒子模型 - 28px

.external-event 
    display:inline-block;
    width:28px;

然后,当您跨越/拖动事件多个小时时,您可以使用 javascript 更改宽度。

您可能希望截断多余的文本并将其显示在悬停/工具提示等处

.external-event 
        overflow:hidden;
    
http://jsfiddle.net/n3Smt/6/

为了在不影响事件形状的情况下完整显示文本,请将其放在内部的单独跨度中,然后为内部跨度添加一些样式,例如:

<span class='external-event'><span class=textWrapper>BIG EVENT WITH SPACES</span></span>

.textWrapper position:absolute;

【讨论】:

结果出乎我的意料。顺便说一句,@Homungus 回答得很好,所以我会使用他的方法。感谢您的尝试。 :-)

以上是关于Jquery将div中的文本拖放到较小的div中的主要内容,如果未能解决你的问题,请参考以下文章

用户 jQuery 拖动一个 DIV 并放入一个 TD ...并使 DIV “卡入”到位

jQuery:最初创建克隆的可拖动 div,然后在被删除后不会

使用 .droppable 拖放到 div 中时,jQuery UI 删除元素

jQuery Droppable:放在 div 之外?

无法将动态创建的droppable中的draggable拖放到另一个droppable中

通过 AJAX 加载 div 时 jQuery 拖放中断