我有许多包含多个div元素的div容器。我想获得正在被拖动的div-元素的父号。
斯凯勒·怀特被拖走了。它应该返回"0“,因为它是从具有相同id”子容器“的子容器的第一个子容器中拖出的。当杰西·平克曼被拖动时,它应该会返回一个1
<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>发布于 2016-08-09 11:04:56
$('div[draggable]').on('drag', function() {
$('#output').text('Parent Index is: ' + $(this).closest('.subcontainer').index());
});#output {
font-weight: bold;
}<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()返回的NodeListaddEventListener在每个匹配的元素上附加event[].slice.call应用于NodeList,以便调用Array的indexOf方法this.parentElement将返回当前元素的parent-element
[].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;
});
});* {
padding: 0;
margin: 0;
}
#output {
font-weight: bold;
}<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>
https://stackoverflow.com/questions/38848942
复制相似问题