首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在dragstart上返回父元素号

如何在dragstart上返回父元素号
EN

Stack Overflow用户
提问于 2016-08-09 11:00:37
回答 1查看 136关注 0票数 1

我有许多包含多个div元素的div容器。我想获得正在被拖动的div-元素的父号。

斯凯勒·怀特被拖走了。它应该返回"0“,因为它是从具有相同id”子容器“的子容器的第一个子容器中拖出的。当杰西·平克曼被拖动时,它应该会返回一个1

代码语言:javascript
运行
复制
<div id="container">
<div id="subcontainer">
<div id="0" draggable="true">Walter White</div>
<div id="1" draggable="true">Skyler White</div>
<div id="2" draggable="true">Hank Schrader</div>
</div>
<div id="subcontainer"></div>
<div id="0" draggable="true">Saul Goodman</div>
<div id="1" draggable="true">Jesse Pinkman</div>
</div>
</div>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-09 11:04:56

  • 使用.index()方法的jQuery
  • 使用.closest选择current元素的各个closest元素
  • 使用drag事件选择当前元素

还请注意,

代码语言:javascript
运行
复制
$('div[draggable]').on('drag', function() {
  $('#output').text('Parent Index is: ' + $(this).closest('.subcontainer').index());
});
代码语言:javascript
运行
复制
#output {
  font-weight: bold;
}
代码语言:javascript
运行
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="container">
  <div class="subcontainer">
    <div id="0" draggable="true">Walter White</div>
    <div id="1" draggable="true">Skyler White</div>
    <div id="2" draggable="true">Hank Schrader</div>
  </div>
  <div class="subcontainer">
    <div id="0" draggable="true">Saul Goodman</div>
    <div id="1" draggable="true">Jesse Pinkman</div>
  </div>
</div>
<br/>
<br/>
<div id="output"></div>

JavaScript 专用解决方案:

  • 使用[].forEach.call迭代Document.querySelectorAll()返回的NodeList
  • 使用addEventListener在每个匹配的元素上附加event
  • [].slice.call应用于NodeList,以便调用ArrayindexOf方法
  • this.parentElement将返回当前元素的parent-element

代码语言:javascript
运行
复制
[].forEach.call(document.querySelectorAll('div[draggable]'), function(elem) {
  elem.addEventListener('drag', function() {
    var elemsArray = [].slice.call(document.querySelectorAll('.subcontainer'));
    var index = elemsArray.indexOf(this.parentElement);
    document.getElementById('output').textContent = 'Parent Index is: ' + index;
  });
});
代码语言:javascript
运行
复制
* {
  padding: 0;
  margin: 0;
}
#output {
  font-weight: bold;
}
代码语言:javascript
运行
复制
<div id="container">
  <div class="subcontainer">
    <div id="0" draggable="true">Walter White</div>
    <div id="1" draggable="true">Skyler White</div>
    <div id="2" draggable="true">Hank Schrader</div>
  </div>
  <div class="subcontainer">
    <div id="0" draggable="true">Saul Goodman</div>
    <div id="1" draggable="true">Jesse Pinkman</div>
  </div>
</div>
<br/>
<br/>
<div id="output"></div>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38848942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档