draggable jquery get start parent()元素

时间:2012-08-21 10:16:33

标签: jquery drag-and-drop jquery-ui-draggable

我想用juery拖放项目。

现在我有一个包含多个项目的“存储空间”。

在另一个网站上我有x个盒子。每个方框只能包含1个项目。

现在,我使用droppable函数在框中设置另一个类,只能添加一个可以使用的框:

 $( ".droppable" ).droppable({
     accept: ".draggable",
     activeClass: "draghover",
     drop: function( event, ui ) {
         if($( this ).hasClass("droppable")) {
             $( this ).removeClass("droppable").addClass( "droppable-");
         }
     } });

现在,当我将项目移回存储区或另一个盒子时,我需要还原类。 我用draggable.start函数尝试了这个,但我无法得到正确的parent()

$( ".draggable" ).draggable({
        revert: "invalid",
        snap: ".droppable",
        snapMode: "inner",
        start: function( event, ui ) {
            alert($( this ).parent().attr("Class"));

        }
    });

这将始终在第一次拖动之前返回起始位置。不是最新的职位。

存储看起来像:

<td valign="top" class="warenlager" bgcolor="grey" width="200">
    <div class="draggable" class="bild ui-widget-content" id="s73-1">S</div>
    <div class="draggable" class="bild ui-widget-content" id="s74-1">S</div>
</td>

Box看起来像:

<td><div class="droppable" id="element 2"></div></td>

此致

3 个答案:

答案 0 :(得分:3)

如果你想在从droppable中删除draggable元素之后恢复该框的类(这是我认为你要求的)然后使用out事件处理程序,所以现在代码看起来像:

 $( ".droppable" ).droppable({
 accept: ".draggable",
 activeClass: "draghover",
 drop: function( event, ui ) {
     if($( this ).hasClass("droppable")) {
         $( this ).removeClass("droppable").addClass( "droppable-");
     }
 },
 out: function()
 {
     $(this).addClass("droppable").removeClass( "droppable-");
 }
 });

希望这会有所帮助:)

答案 1 :(得分:0)

你可以这样做( by ES6 ):

Online demo (jsfiddle)

add

答案 2 :(得分:-1)

我知道这不是最近的,但获取可拖动项目的父元素的一种方法是在draggable上使用start事件。

$( ".draggable" ).draggable({
    revert: "invalid",
    snap: ".droppable",
    snapMode: "inner",
    start: function( event, ui ) {
        alert(event.currentTarget.parentElement);
    }
});