【问题标题】:dragula JS move from one list to another with on click eventdragula JS 通过点击事件从一个列表移动到另一个列表
【发布时间】:2016-02-27 20:53:17
【问题描述】:

我使用 Dragula JS 来实现拖放功能,我还希望可以选择通过鼠标单击来回移动列表中的元素,而不会丢失拖放功能。我怎样才能做到这一点?

所以我点击元素 1 并移动到列表中。 我从该列表中单击它并返回。 这就是想法。

如果有帮助,我准备了一个基本的拖放操作。 http://jsfiddle.net/vf6dnwxj/10/

我在上面小提琴中的结构:

<div class="wrapper panel panel-body">
<ul id="left1" class="cont-dragula">

</ul>
<ul id="right1" class="cont-dragula">
    <li>Item 1</li>
    <li>Item 2</li>
    <li>Item 3.</li>
    <li>Item 4.</li>
    <li>Item 5.</li>
    <li>Item 6.</li>
</ul>
</div>

JS:

dragula([left1, right1]);

【问题讨论】:

    标签: javascript html draggable dragula


    【解决方案1】:

    嗯,dragula 没有做任何特别的事情,它只是移动物品。所以你可以简单地在你自己周围移动它们:

    var leftList = document.querySelector('#left1');
    var rightList = document.querySelector('#right1');
    var list = document.querySelectorAll('#right1 li, #left1 li');
    for (var i = 0; i < list.length; i++) {
      list[i].addEventListener('click', function(){
            if (this.parentNode.id == 'right1') {
            leftList.appendChild(this);
          } else {
            rightList.appendChild(this);
          }
      });
    }
    

    demo fiddle

    如果您希望在操作 DOM 之前触发 Dragulas 回调,请添加 drake.start(this) 并在操作之后添加 drake.end():

    drake = dragula([left1, right1]);
    drake.on('drop', function(el, target, source, sibling){
    console.log(el);
    console.log(target);
    console.log(source);
    console.log(sibling);
    });
    var leftList = document.querySelector('#left1');
    var rightList = document.querySelector('#right1');
    var list = document.querySelectorAll('#right1 li, #left1 li');
    for (var i = 0; i < list.length; i++) {
      list[i].addEventListener('click', function(){
                drake.start(this);
            if (this.parentNode.id == 'right1') {
            leftList.appendChild(this);
          } else {
            rightList.appendChild(this);
          }
          drake.end();
      });
    }
    

    【讨论】:

    • 太棒了!效果很好。也许你会知道如何做到这一点:stackoverflow.com/questions/35676922/… 试图让它工作,这样我就可以放弃 jQuery UI。如果有机会,请告诉我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-23
    • 2021-04-05
    • 1970-01-01
    相关资源
    最近更新 更多