jQuery Droppable - 删除后不要删除<li>标签的原始CSS类

时间:2015-04-23 09:34:16

标签: jquery jquery-droppable

我正在使用jQuery UI Droppable插件......

不知何故,我的Draggable <li>元素类在删除后被删除。 :(

如何在删除元素

后为<li>标记维护相同的CSS类

<li class="one">Item 1</li>放到购物车区域后,我希望将<li>元素与<li class="one">Item 1</li>元素保持同一级别,而当前它会被自动删除。

请检查下面的代码......

  

HTML

<div id="products">
  <h2>Drag</h2>
  <div id="catalog">
      <ul>
        <li class="one">Item 1</li>
        <li class="two">Item 2</li>
        <li class="three">Item 3</li>
        <li class="four">Item 4</li>
        <li class="five">Item 5</li>
        <li class="six">Item 6</li>
      </ul>
  </div>
</div>

<div id="cart">
  <h2>Drop Here...</h2>
  <div class="ui-widget-content">
    <ol>
      <li class="placeholder">Add your items here</li>
    </ol>
  </div>
</div>
  

的jQuery

$(function() {
    $( "#catalog li" ).draggable({
        appendTo: "body",
        helper: "clone"
    });
    $( "#cart ol" ).droppable({
        activeClass: "ui-state-default",
        hoverClass: "ui-state-hover",
        accept: ":not(.ui-sortable-helper)",
        drop: function( event, ui ) {
            $( this ).find( ".placeholder" ).remove();
            $( "<li></li>" ).html( ui.draggable.html() ).appendTo( this );
        }
    }).sortable({
        items: "li:not(.placeholder)",
        sort: function() {
            $( this ).removeClass( "ui-state-default" );
        }
    });
});

FIDDLE

3 个答案:

答案 0 :(得分:1)

更改此行:

$( "<li></li>" ).html( ui.draggable.html() ).appendTo( this );    

到此:

$(ui.draggable).appendTo(this);

$(ui.draggable).clone().appendTo(this);

$( "<li class='"+$(ui.draggable).attr("class")+"'></li>" ).html( ui.draggable.html() ).appendTo( this );    

您的代码正在创建一个新的li。

演示:http://jsfiddle.net/kux7x16y/5/

答案 1 :(得分:1)

将可拖动的li的类添加到新的li

 $( "<li class='"+ui.draggable.attr('class')+"' ></li>" ).html( ui.draggable.html() ).appendTo( this );

这是演示

http://jsfiddle.net/ReddyPrasad/kux7x16y/3/

答案 2 :(得分:0)

drop函数中,只需添加ui.draggable对象,无需创建自己的元素来表示拖动对象的开销。

drop: function( event, ui ) {
    $( this ).find( ".placeholder" ).remove();
    $(ui.draggable).appendTo(this);
}

DEMO