使可拖动元素掉落在目标上

时间:2012-01-21 03:53:50

标签: javascript jquery plugins drag-and-drop

现在我知道你们在读标题时的想法。你可能会想到我在谈论jQuery UI可拖动。但我实际上是在谈论我为社区制作的插件。我正在尝试为我的插件创建一个目标。它的工作原理如你所见:

http://jsfiddle.net/XvZLn/24/

你可以看到它运作良好。

首先,让我解释一下假设会发生什么。那么我想要的是,如果元素被丢弃在目标中...... targ.on()会被启动。这是我的插件中的onTarget功能。这个和offTarget(targ.off())在我的插件中不起作用。

这就是我的插件中的内容:

var targ = {
                            on: o.target.onTarget,
                            off: o.target.offTarget
                        };

然后我的插件设置代码是:

$(document).ready(function() {
    $('#drag').jDrag({
        revert: false,
        revertDuration: 500,
        ghostDrop: false,
        ghostRevert: false,
        ghostOpacity: '0.50',
        instantGhost: false,
        activeClass: false,
        handle: false,
        grid: false,
        cookies: false,
        cookieExdate: 365,
        radialDrag: false,
        radius: 100,
        circularOutline: false,
        strictMovement: false,
        distance: 0,
        not: false,
        containment: false,
        target: {
            init: '#container',
            lock: false,
            onTarget: function() {
                $(this).hide();
            },
            offTarget: function() {}
        },
        onPickUp: function() {},
        onDrop: function() {}
    });
});

我不明白为什么它不起作用。

如果你想查看它,这是我的实际插件:

http://jsfiddle.net/ZDUZL/89/

1 个答案:

答案 0 :(得分:2)

尝试:

onTarget: function() {
                console.log(this);
                $(this).hide();
            },

你会看到“this”不是指元素,而是指持有函数的对象。

将元素作为参数传递:

if (locker === false) {
    if (statement) {
        targ.on(this);
        lock = false;
    } else {
        targ.off();
        lock = false;
    }
}

http://jsfiddle.net/ZDUZL/91/