还原可拖动对象

Reverting draggables

本文关键字:对象 拖动 还原      更新时间:2024-05-22

目前,我的draggable可以放在网格中的任何位置。

如果这些可拖拉的东西没有掉到风格突出的区域,我需要它们恢复原状。

我该怎么做?

目前,如果它们没有从可拖动的网格中掉落,我已经让它们恢复,就像这样…

    $('.drag').draggable({
    helper: 'clone',
    snap: '.drop',
    grid: [60, 60],
    revert: 'invalid',
 });

这是选择所需降落区域的函数。。。

    $('#pickNext').mousedown(function() {
    // remove the class from all td's
    $('td').removeClass('spellword');
    // pick a random word
    var r = rndWord;
    while (r == rndWord) {
    rndWord = Math.floor(Math.random() * (listOfWords.length));
}
    // apply class to all cells containing a letter from that word
    $('td[data-word="' + listOfWords[rndWord].name + '"]').addClass('spellword');
});

像这样的。。。

    $('.squares').draggable({
    drop: function(event, ui){
    if (squares.drop ! word) {
    revert: 'invalid'
    }
  }
});

或者这个。。

$('.squares').draggable({
    drop: function(event, ui) {
        if ($(this).text() == $(ui.draggable).text().trim()) {
            revert: 'valid'
        }
                else {
                revert: 'invalid'
    }
                }
});

每次开始拖动字母时,都需要创建与给定字母匹配的新drop区域。目前,每个字母都是droppable,这不是你想要的。

为了做到这一点,我修改了您的JSFiddle,以便在每次开始拖动字母时使用一个名为makeDroppables()的函数来创建放置区域。

工作JSFiddle

注:答案经过编辑以更接近问题。

此外,从draggable:上的jQuery UI文档

"如果设置为无效,则只会发生还原如果可拖动对象尚未掉落到可拖动对象上。"