找到掉落的元素

时间:2017-01-19 22:07:52

标签: jquery drag-and-drop

我正在制作一个国际象棋棋盘,并试图找到该棋子被丢弃的桌子元素。不幸的是,掉落事件似乎根本没有发射。

https://jsfiddle.net/thwee3/hhxt84k1/

$('.piece').draggable();
$('.pieces').droppable({
  drop: function(){
    alert($(this).attr('id')); // should give me the number of the field
  }
});

这是我到目前为止,有人可以告诉我为什么掉落事件没有被解雇?

4 个答案:

答案 0 :(得分:3)

$(document).ready(function(){
    $('.piece').draggable();
    $('.field').droppable({
        drop: function(){
            alert($(this).attr('id'));
        }
    });
});

并将其添加到css:

.field {
    height:100%;
}

请参阅demo

答案 1 :(得分:2)

棋盘正方形中的div元素将为零高度。因此,当你放下正方形时,你会击中td元素 - 而不是微小的div。

尝试添加CSS

.tile {
    height: 100%;
}

并将等级磁贴添加到div中,使它们变为

<td><div id="0" class="field"></div class="tile"></td>

然后将代码更改为

$('.piece').draggable();
$('.tile').droppable({
  drop: function(){
    alert($(this).attr('id')); // should give me the number of the field
  }
});

您犯的错误是假设div元素将填充其父元素。你在这方面做得很好。我读到有关调试div的一个重要提示是将背景颜色应用于div,以便获得视觉反馈,表明它的行为正如您所期望的那样 - 非常值得。

答案 2 :(得分:1)

它与需要高度的div有关 或者删除div并使用td上的ID和类

答案 3 :(得分:0)

你的droppable元素有id =“pieces”,而不是class =“pieces”。

尝试在droppable元素上使用#board或#pieces