有没有办法匹配可拖动和可放置的 id?

Posted

技术标签:

【中文标题】有没有办法匹配可拖动和可放置的 id?【英文标题】:Is there a way to match draggable and droppable id's? 【发布时间】:2019-09-09 01:38:10 【问题描述】:

我正在建设拖放益智游戏。我在左侧有可拖动(图像),在右侧有可放置(div)。如您所见,它们都有唯一的ID,例如 "img_1" 和 "drop_1" ,所以基本上我想通过他们的 id 号码来匹配它们,在这种情况下是 "_number"。如果我成功了,我想我可以开发一些我需要的逻辑。

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="wrapper">
    <div id="tasks">
      <img class="task" id="img_1" src="img/puzz1.jpg" >
      <img class="task" id="img_2" src="img/puzz2.jpg" >
      <img class="task" id="img_3" src="img/puzz3.jpg" >
      <img class="task" id="img_4" src="img/puzz4.jpg" >
      <img class="task" id="img_5" src="img/puzz5.jpg" >
      <img class="task" id="img_6" src="img/puzz6.jpg" >
      <img class="task" id="img_7" src="img/puzz7.jpg" >
      <img class="task" id="img_8" src="img/puzz8.jpg" >
      <img class="task" id="img_9" src="img/puzz9.jpg" >



     

    </div>

    <div id="drops">
      <div id="drop_1" class="box2"></div>
      <div id="drop_2" class="box2"></div>
      <div id="drop_3" class="box2"></div>
      <div id="drop_4" class="box2"></div>
      <div id="drop_5" class="box2"></div>
      <div id="drop_6" class="box2"></div>
      <div id="drop_7" class="box2"></div>
      <div id="drop_8" class="box2"></div>
      <div id="drop_9" class="box2"></div>



    </div>

逻辑应该是这样的:

if(draggable id "_number" != dropabble id"_number")return to original position

elsestay in that droppable

【问题讨论】:

【参考方案1】:

我找到了答案。 Simple 只是在可拖动元素上添加了“data-id='a'”,并且还在可放置元素上添加了“data-id='a'(必须是相同的数据 id)”。

接下来要做的就是在 jQuery 中将它们与 attr 匹配就可以了。

$(function () 
  $(".task").draggable( revert: 'invalid' );
  $(".box2").droppable( 
      accept: function(drag) 
          var dropId = $(this).attr('data-id');
          var dragId = $(drag).attr('data-id');
          return dropId === dragId;
      
  );
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="wrapper">
    <div id="tasks">
      <img class="task" data-id='a' id="img_1" src="img/puzz1.jpg" >
      <img class="task" id="img_2" src="img/puzz2.jpg" >
      <img class="task" id="img_3" src="img/puzz3.jpg" >
      <img class="task" id="img_4" src="img/puzz4.jpg" >
      <img class="task" id="img_5" src="img/puzz5.jpg" >
      <img class="task" id="img_6" src="img/puzz6.jpg" >
      <img class="task" id="img_7" src="img/puzz7.jpg" >
      <img class="task" id="img_8" src="img/puzz8.jpg" >
      <img class="task" id="img_9" src="img/puzz9.jpg" >



     

    </div>

    <div id="drops">
      <div id="drop_1" data-id='a' class="box2"></div>
      <div id="drop_2" class="box2"></div>
      <div id="drop_3" class="box2"></div>
      <div id="drop_4" class="box2"></div>
      <div id="drop_5" class="box2"></div>
      <div id="drop_6" class="box2"></div>
      <div id="drop_7" class="box2"></div>
      <div id="drop_8" class="box2"></div>
      <div id="drop_9" class="box2"></div>



    </div>
  </div>

我也没有为我的所有元素都这样做,但我会这样做。我只是想发布答案。

【讨论】:

以上是关于有没有办法匹配可拖动和可放置的 id?的主要内容,如果未能解决你的问题,请参考以下文章

jQuery 可排序和可放置

如何使 div 可拖动和可放置

jQuery-UI 可拖动和可放置项目变为不可拖动

Jquery 可拖动/可放置和可排序组合

jQueryUI 可排序和可拖动目标不会水平滚动以进行放置,但会进行排序

jQuery 可拖动和可拖放,在可拖动 ul 上滚动