【问题标题】:jQuery UI Draggable/Sortable - Dynamically added items not draggablejQuery UI Draggable/Sortable - 动态添加的项目不可拖动
【发布时间】:2012-05-16 20:21:02
【问题描述】:

我有一组可拖动/可排序的列表,我正在动态添加项目,但问题是,一旦添加了项目,就无法将它们移动到新列表中。您可以在此处查看功能:http://jsfiddle.net/Y4T32/2/

将一个项目从可用列表拖到目标列表之一,您就会明白我的意思。现在添加一个“标注”并尝试将新项目拖到目标列之一。

我在这里找到了另一个我想要的答案,但无法重现他们得到的结果(当然,现在找不到答案)。了解我在这里做错了什么吗?

【问题讨论】:

  • 我找到了this answer,做了一点修改。但是,在我看来,这可能不是最好的方法。我更新了我的小提琴。 jsfiddle.net/Y4T32/7

标签: jquery jquery-ui jquery-ui-sortable jquery-ui-draggable


【解决方案1】:

更新答案

您必须为每个添加的元素调用.draggable()。您在初始化时使用的 jQuery 选择器仅适用于当前存在的元素,而不适用于您将创建的元素。

这里有一些应该可以工作的 JS:

var draggable_opts = {
            connectToSortable: ".sph-callout-portlet",
            helper: "clone",
            opacity: 0.75,
            revert: 'invalid',
            stop: function(event, ui) {
                //alert(ui)
            }
        };

$(function() {
    $( ".sph-callout-portlet" ).sortable({
        opacity: 0.75,
        placeholder: "ui-state-highlight",
    }).disableSelection();

    $( "#sph-callout-portlet-avail li" ).draggable(draggable_opts);

    $(document).on("click",'#addNewCo',function(e){
        e.preventDefault();
        var newCo = $('<li>New Callout</li>').draggable(draggable_opts);
        $('#sph-callout-portlet-avail').append(newCo);
    });
});​

http://jsfiddle.net/SGevw/

【讨论】:

  • 最好在此处发布您的代码,以防 jsFiddle 无法访问。此外,对您所做的事情的解释是一个加号。
  • @PedroFerreira,这与我想要的非常接近,除了我不希望用户能够在列之间拖动它们或将它们拖回可用的列。这就是为什么我给他们不同的类名。
  • @AaronWagner:好吧,我误解了你想要的。这是一个应该可以工作的版本。
  • 完美!我现在看到了您所做的,在添加新项目之前使其可拖动。聪明的。我以为我尝试过类似的方法,但无济于事!感谢您的帮助!
  • @PedroFerreira,如果你也想看看this question,我们将非常感激!
猜你喜欢
  • 1970-01-01
  • 2021-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-09
  • 2023-03-12
  • 1970-01-01
相关资源
最近更新 更多