jquery拖放按钮onclick

Posted

技术标签:

【中文标题】jquery拖放按钮onclick【英文标题】:Jquery drag and drop the button onclick 【发布时间】:2020-10-08 08:09:12 【问题描述】:

我试图通过单击按钮而不是拖放将按钮移动到下一个 div。此代码取自 w3schools 网站。我的问题是是否可以通过单击将按钮移动到下一个 div按钮改为拖放

      <!DOCTYPE html>
      <html>
      <head>
      <style>
      #div1, #div2 
        float: left;
        width: 100px;
        height: 35px;
        margin: 10px;
        padding: 10px;
        border: 1px solid black;
      
      </style>
      <script>
      function allowDrop(ev) 
        ev.preventDefault();
      

      function drag(ev) 
        ev.dataTransfer.setData("text", ev.target.id);
      

      function drop(ev) 
        ev.preventDefault();
        var data = ev.dataTransfer.getData("text");
        ev.target.appendChild(document.getElementById(data));
      
      </script>
      </head>
      <body>

      <h2>Drag and Drop</h2>
      <p>Drag the image back and forth between the two div elements.</p>

      <div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)">
        <img src="img_w3slogo.gif" draggable="true" ondragstart="drag(event)" id="drag1"  >
      </div>

      <div id="div2" ondrop="drop(event)" ondragover="allowDrop(event)"></div>

      </body>
      </html>

【问题讨论】:

如果你想做一些按钮的显示和隐藏,那么使用 jquery 的显示和隐藏来代替这个。 & 在两个 div 中创建单独的按钮。 【参考方案1】:
<!DOCTYPE HTML>
<html>

<head>
    <style>
        #div1,
        #div2 
            float: left;
            width: 100px;
            height: 35px;
            margin: 10px;
            padding: 10px;
            border: 1px solid black;
        
    </style>
    <script>
        function allowDrop(ev) 
            ev.preventDefault();
        

        function drag(ev) 
            ev.dataTransfer.setData("text", ev.target.id);
        

        function drop(ev) 
            ev.preventDefault();
            var data = ev.dataTransfer.getData("text");
            ev.target.appendChild(document.getElementById(data));
        
        function move(ev) 
            ev.preventDefault();
            var target = (ev.target.parentNode.id == 'div1') ? 'div2' : 'div1';
            document.getElementById(target).appendChild(ev.target);
        
    </script>
</head>

<body>
    <h2>Drag and Drop</h2>
    <p>Drag the image back and forth between the two div elements.</p>
    <div id="div1" ondrop="drop(event)" ondragover="allowDrop(event)">
        <img src="img_w3slogo.gif" draggable="true" ondragstart="drag(event)" onClick="move(event)" id="drag1"  >
    </div>
    <div id="div2" ondrop="drop(event)" ondragover="allowDrop(event)"></div>
</body>

</html>

【讨论】:

【参考方案2】:

是的,这是可能的。你可以检查一下:

<!DOCTYPE HTML>
      <html>
      <head>
      <style>
      #div1, #div2 
        float: left;
        width: 100px;
        height: 35px;
        margin: 10px;
        padding: 10px;
        border: 1px solid black;
      

      #button2 
        display: none;
      
      </style>
      <script>
      function moveButton(e) 
        let btn1 = document.getElementById('button1');
        let btn2 = document.getElementById('button2');
        let btn_id = e.target.id;
        if(btn_id == "button1")
            e.target.style.display = 'none';
            btn2.style.display= 'block';
         else 
            e.target.style.display = 'none';
            btn1.style.display= 'block';
        
      

      </script>
      </head>
      <body>

      <div id="div1">
        <button id="button1" onClick="moveButton(event)">Click Me</button>
      </div>

      <div id="div2"><button id="button2" onClick="moveButton(event)">Click Me</button></div>


      </body>
      </html>

【讨论】:

以上是关于jquery拖放按钮onclick的主要内容,如果未能解决你的问题,请参考以下文章

Jquery easyui 教程

jQuery拖放 - 检查droppable之外的拖放

30 个最棒的 jQuery 的拖放插件

在 FabricJS 画布上拖放和删除对象

使用拖放重新排列 HTML 表格行

30 个最棒的 jQuery 的拖放插件