2011-10-01 32 views
2

我使用jQuery的模板,用于动态创建具有不同项目的列表(列)(它们也动态添加)页面刷新,也创造了一个插件,它可以帮助移动项目从一个列表到第二或第三即使用jquery ui拖动&删除,但在将项目拖放到新添加的列表时出现问题。问题移动新项目新增加的列表,直到我做

情景:当我点击添加列表按钮,在页面上创建列表。所以我添加了一个名为'list1'的列表,每个列表都有一个按钮来添加列表中的项目,所以通过按两次我在'list1'上添加了2个项目。项目是可移动/可拖放/可丢弃的。现在添加了名为'list2'的第二个列表。因此,如果我尝试将项目从“list1”移动到“list2”,则不会执行该操作,而是将项目移至“list1”。这发生在没有页面重新加载的情况下,但是如果我刷新页面并且现在执行相同的操作,则该项目可以被移动到'list2'。下面是我使用的拖放目的的代码如下(下面的代码放在我的jQuery插件):

var id = $('.' + options.dropID); 
      var id0 = options.dropID; 

      $('.' + options.dropID).sortable({ 

       helper: "clone", 
       revert: "invalid", // go back to original droppable when drop outside drop area 
       connectWith: '.' + options.dropID, 
       over: function (event, ui) { 

        // may be usefull 
        var sortableElement = this; 

        var dataToSave = { 
         name: ui.item.text(), 
         objid: ui.item.attr('title'), // id has changed for array so use original id stored in title 
         thisID: $(sortableElement).attr('id'), 
         array: $(sortableElement).sortable("serialize") 
        }; 

        // save the new data 
        saveData(dataToSave); 
       } 
      }); 

所以我注意到一个现象是,不同的行为是在这里: - 增加一个项目并没有页面加载,它加入以下的div

<div id="337" class="cardItem droppable">   </div> 

所以,如果我尝试添加此项目不允许我。

  • 页面加载之后,修改上面div来:

它增加了用户界面可排序以类属性。所以我试着搜索这个ui-sortable如何或何时被添加,它是通过jquery的可排序方法完成的。

,并在页面加载我打电话这样的插件:

<script type="text/javascript"> 
     $(window).bind("load", function() { 
      $('.laneList').ListDragandDrop(); 
     }); 
    </script> 

我还调用ListDragandDrop()添加新的列表或项目之后,但它不添加ui-sortable到div,我必须刷新页面,以便它可以使'list2'可丢弃。你能告诉我我做错了什么,或者我应该修改什么来使其工作。

回答

1

JQuery的sortables似乎已经固定在最新版本的创建后添加的项目。如果你仍然看到这个问题,请添加一个jsfiddle,这样我们可以帮助进行调试。