【问题标题】:drag and drop functionality with click单击拖放功能
【发布时间】:2017-10-14 02:29:08
【问题描述】:

我正在创建一个非常简单的拖放应用程序。

使用 html5 的拖放功能可以在桌面上完美运行。

我想复制使用 click(select) 和 click(target, drop) 的拖放功能。

我想要发生的事情。

您单击要移动的元素(即在移动情况下使用鼠标或手指)

您选择的元素存储在 dom 中,然后在下一次单击(在目标区域中)时附加该元素。

这可以实现吗?如何实现?

谢谢

【问题讨论】:

    标签: javascript jquery drag-and-drop


    【解决方案1】:
    <html lang="en">
    <head>
    <meta charset="UTF-8" />
    <title>Document</title>
    <style>
    
      .clickableBtn {
        border: 1px solid green;
        background-color: #bed1a3;
        display: inline-block;
      padding: 10px 15px; 
      margin: 20px;
    }
    .clickableBtn:hover {
      cursor: pointer;
    }
    
    .selected {
      opacity: .3;
    }
    .targetArea {
      border: 1px solid red;
      background: orange;
      width: 200px;
      height: 200px;
      position: absolute;
      left: 50%;
      top: 20px;
    }
    .targetArea:hover {
      cursor: pointer;
    }
    </style>
    <script src="https://code.jquery.com/jquery-2.2.4.min.js"></script>
    </head>
    <body>
    
      <div class="clickableBtn">Click me!!</div>
    
      <div class="targetArea"></div>
    
      <script>
         $(function(){
    
           $('.clickableBtn').on('click',function(e){
             e.preventDefault();
             if ( $(this).parent().prop('class') != 'targetArea' ){
                $(this).toggleClass('selected');
             }
           });
           $('.targetArea').on('click',function(e){
             e.preventDefault();
             if( $('.selected').lenght !== 0 ) {
               $(this).append($('.selected'));
               $('.selected').removeClass('selected');
             }
           });
         });
      </script>
    
    </body>
    </html>
    

    【讨论】:

      【解决方案2】:

      我会通过在你点击它们之后将“点击”项目的引用存储在一个变量(列表、对象、任何适合你的东西)中来实现这一点。当您单击“放置”区域(以任何您想要的方式找出“放置区域”是什么)时,只需读取该变量并将所有单击的项目“移动”(可能使用 CSS)到“放置”区域。

      【讨论】:

      • 这是要走的路。感谢您的帮助!
      【解决方案3】:

      下面的例子是一个简单的拖放例子:

      <!doctype html>
      <html lang="en">
      <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>jQuery UI Sortable - Connect lists</title>
        <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
        <link rel="stylesheet" href="/resources/demos/style.css">
        <style>
        #sortable1, #sortable2 {
          border: 1px solid #eee;
          width: 142px;
          min-height: 20px;
          list-style-type: none;
          margin: 0;
          padding: 5px 0 0 0;
          float: left;
          margin-right: 10px;
        }
        #sortable1 li, #sortable2 li {
          margin: 0 5px 5px 5px;
          padding: 5px;
          font-size: 1.2em;
          width: 120px;
        }
        </style>
        <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
        <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
        <script>
        $( function() {
          $( "#sortable1, #sortable2" ).sortable({
            connectWith: ".connectedSortable"
          }).disableSelection();
        } );
        </script>
      </head>
      <body>
      
      <ul id="sortable1" class="connectedSortable">
        <li class="ui-state-default">Item 1</li>
        <li class="ui-state-default">Item 2</li>
        <li class="ui-state-default">Item 3</li>
        <li class="ui-state-default">Item 4</li>
        <li class="ui-state-default">Item 5</li>
      </ul>
      
      <ul id="sortable2" class="connectedSortable">
        <li class="ui-state-highlight">Item 1</li>
        <li class="ui-state-highlight">Item 2</li>
        <li class="ui-state-highlight">Item 3</li>
        <li class="ui-state-highlight">Item 4</li>
        <li class="ui-state-highlight">Item 5</li>
      </ul>
      
      
      </body>
      </html>
      

      Refrence Link

      【讨论】:

      • 感谢您的回答,但这只是拖放功能。我更新了我的问题,以更清楚地说明我在问什么。谢谢。
      猜你喜欢
      • 1970-01-01
      • 2011-11-10
      • 2012-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多