0

我对 Javascript 中的拖放 API 有疑问。我有两个区域,一个称为小部件,另一个称为selection。现在我希望能够从一个区域拖放小部件。这已经有效,但只有当我将小部件拖到选择面板时。

当我想将它拖回小部件面板时。这没用。根据我的调试,从不调用dragstart事件。所有其他事件都有效,只有这个事件似乎没有被触发。

但我找不到任何理由为什么这个事件永远不会被触发。

这是dragstart事件处理程序的代码:

`widget.on('dragstart', function(e){

        this.style.opacity = '0.4';

        console.log('started');
        dragSrcEl = this;
        console.log(dragSrcEl);

        console.log(this.outerHTML);
        e.originalEvent.dataTransfer.effectAllowed = 'move';
        e.originalEvent.dataTransfer.setData('text/html', this.outerHTML);
    });

`

我制作了一个 jsFiddle,您可以在其中找到整个代码:

http://jsfiddle.net/3FLaS/

4

1 回答 1

0

我自己找到了答案:

当元素改变他的“位置”时,jQuery 选择器$('.widget')不会得到通知。

document当您使用 on 方法时,您必须使用其他选择器,如预期的那样工作,并且在每个 dragstart 时触发事件。

`$(document).on('dragstart', '.widget', function(e){ this.style.opacity = '0.4';

    console.log('started');
    dragSrcEl = this;
    console.log(dragSrcEl);

    console.log(this.outerHTML);
    e.originalEvent.dataTransfer.effectAllowed = 'move';
    e.originalEvent.dataTransfer.setData('text/html', this.outerHTML);
});

`

于 2013-07-18T18:27:57.237 回答