1

后添加到一个新的LI的属性,我有2名列表:从“页面池”列表我怎么能丢弃

<h3>Available page layouts</h3> 

<ul id="pagepool" class="connectedSortable"> 
    <li id="I1" class="ui-state-default"></li> 
    <li id="I2" class="ui-state-default"></li> 
    <li id="I3" class="ui-state-default"></li> 
    <li id="I4" class="ui-state-default"></li> 
    <li id="I5" class="ui-state-default"></li> 
</ul> 

<h3>Document structure</h3> 

<ul id="docstruct" class="connectedSortable"></ul> 

项目被拖动(复制)到“docstruct”列表,然后手动排序。在docstruct列表中可能有重复的页面样式(带有重复的id属性)。

我想要做的是通过一个php文件/ ajax请求一个独特的md5散列,并在该项目被删除后将该散列添加到被删除项目的rel属性中。我尝试过的所有东西都会更新“pagepool”原始项目。

我怎么能修改此目标克隆的项目只有?:

$("#pagepool li").draggable({ 

      connectToSortable: '#docstruct', 
      helper: 'clone', 
      revert: 'invalid', 
      opacity: '.7' 

           }); 

$("#docstruct").sortable({ 
      placeholder: "ui-state-highlight", 
      revert: true, 
      receive: function(event, ui) { 
      $.get('ajax/uniqid.php', function(data){ui.item.attr('rel', data)})  
               }  
          }); 
+3

首先,在你的HTML没有两个元素可以共享相同的ID。就在前面,这将打破一切。其次,MD5有什么意义? – 2011-04-19 20:46:29

+2

同意亚当 - 我认为可排序/可拖动的插件很可能使用ID来定位元素,并因此选择错误的插件。你可以为每个li使用不同于“id”的属性吗? HTML5提供了data- {something}属性来保存诸如id之类的东西。 – wows 2011-04-19 20:47:55

+1

+1和亚当。据我所知,你也不应该使用'rel'属性,它只对'a'和'link'有效。改用类似ui.item.data(“hash”,data)的东西。 – DarthJDG 2011-04-19 20:53:38

回答

0

不知道为什么是这样的话,但这里是我发现。

在接收事件中,您无法访问在可排序列表中正在创建的实际项目。助手指向只用于拖动的克隆,item是您单击要拖动的原始项目。

但是,beforeStop事件在接收事件之前触发。在beforeStop中,该项目实际上是列表中的项目。因此,在beforeStop中,您可以保存该项目,然后将其用于接收。

演示在这里:http://jsfiddle.net/kcg29/