我目前有一组 div,它们位于 jQuery 嵌套可折叠集中,如果要让它们工作,需要一些时间。我已经让这些工作了,但是现在想要添加在单击我放置的向上箭头时根据请求在页面上向上移动列出的项目的功能。我编写了可以(在某种程度上)移动 div 的 javascript,如下所示:
$(document).ready(function() {
$('.upItem').click(function(event) {
if($(this.parentNode.parentNode).index() === 0) {
alert($(this.parentNode.parentNode).attr('name') + ' is currently at the top');
} else {
$(this.parentNode.parentNode).insertBefore(this.parentNode.parentNode.previousSibling);
alert($(this.parentNode.parentNode).attr('name') + ' moved Up');
}
}
);
});
父节点块是为了让正确的元素移动,它们最终看起来移动得很好。
我正在使用 PHP 生成的类似于以下内容的 HTML:
<div name="H4Order_1" class="h4Holder">
<h4 id="L2_item_29" class="collapsible collapse-open"><span></span>SuperBowl</h4>
<div class="container2" style="display: block;">
<div name="H5Order_1" class="h5Holder">
<span class="buttonHolder">
<span class="upItem">▲</span>
</span>
<h5>Item 1</h5>
</div>
<div name="H5Order_2" class="h5Holder">
<span class="buttonHolder">
<span class="upItem">▲</span>
</span>
<h5>Item 2</h5>
</div>
<div name="H5Order_3" class="h5Holder">
<span class="buttonHolder">
<span class="upItem">▲</span>
</span>
<h5>Item 3</h5>
</div>
<div name="H5Order_4" class="h5Holder">
<span class="buttonHolder">
<span class="upItem">▲</span>
</span>
<h5>Item 4</h5>
</div>
</div>
我遇到的问题是,当我单击具有 .upItem 类的元素时,脚本会触发,并且当项目位于顶部以及“移动”时,我可以看到警报,但通常元素确实实际不动。我会看到它已被移动的警报,但它没有按预期向上移动。在下一次单击时,它将移动。有时在此处单击一下后,所有元素都会按预期开始移动,每次单击一次,但这只是在对多个项目进行大量单击之后才发生的。
有什么方法可以排除故障,以找出为什么有时需要单击 2 次才能使项目实际移动?
根据请求,这里是 jfiddle: