【问题标题】:JQuery, using Sortable in a calendarJQuery,在日历中使用 Sortable
【发布时间】:2012-04-20 19:25:49
【问题描述】:

我正在构建一个事件日历并使用 jQuery 中的可排序功能。我的目标是允许用户将事件拖到日历上的任何一天。

一天可以有多个事件,我的一天DIV是这样的。

<div>
  <ul id="day1" class="day">
    <li class="eventDetail" id="1_1">Event 1</li>
    <li class="eventDetail" id="1_2">Event 2</li>
    <li class="eventDetail" id="1_3">Event 3</li>
  </ul>
</div>

这是我的可排序函数

$(".eventDetail").sortable({
    connectWith: ".eventDetail",
    update: (function(event, ui){
        alert($(this).text());
    })
}).disableSelection();

我正在使用更新参数来提醒当前文本值。但是,我收到了给定 LI 组的所有文本值。例如,对于上面的那个,我的警报看起来像“EVENT 1, EVENT 2, EVENT 3” - 为什么?

谢谢!

【问题讨论】:

    标签: jquery calendar draggable jquery-ui-sortable


    【解决方案1】:

    试试这个:

    ...
    update: (function(event, ui){
        alert($(ui.item).text());
        alert($(ui.placeholder).text());
    }
    ...
    

    【讨论】:

    • 顺便说一句,我的警报发生了两次,你能解释一下原因吗?
    • 实际上,如果我将它拖到新的一天,它只会出现两次。我认为第一个警报是针对我移动的元素,第二个警报是针对因第一个元素而碰撞的元素。
    • 好吧,在这种情况下,两个可排序的状态发生了变化,这就是 update 事件触发两次的原因。
    • 这是一个示例,您可以如何区分这些情况。 jsfiddle.net/WY6ru/1
    • 感谢 dfsq。我对
    • 的物理移动到新的一天有点问题。在我上面的代码中,我有 3 个事件。如果我要将事件 3 从第 1 天移到第 2 天,我不能再将事件从另一天移回第 1 天的位置 3,因为那里没有 LI。关于如何解决这个问题的任何想法?我需要更改我的 connectWith 值吗?
    【解决方案2】:

    您可以在回调中使用 ui 项来获取有关拖动项的信息。 (您还需要在 &lt;ul&gt; 标签上调用 .sortable)。

    查看此演示:http://jsfiddle.net/WY6ru/

    【讨论】:

    • 为什么我还需要在 ul 上调用 sortable?
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签