如何在删除后向新LI添加属性

时间:2011-04-19 20:43:43

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

我有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>

将“pagepool”列表中的项目拖动(克隆)到“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)})     
                                                }       
                          });

1 个答案:

答案 0 :(得分:0)

不确定为什么会这样,但这是我发现的。

在receive事件中,您无法访问可排序列表中正在创建的实际项目。帮助程序指向仅用于拖动的克隆,项目是您单击以拖动的原始项目。

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

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