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/