我想要做的是交换两个HTML DOM节点。
我们采用以下HTML列表和下面的交换按钮:
<ul class="center-text">
<li>0</li>
<li>1</li>
<li>2</li>
</ul>
<form class="center-text">
<button id="swapButton">Swap</button>
</form>
这是我的JS代码:
// the "ready" method is the only jQuery method used in the code
$(document).ready(function(){
document.getElementById("swapButton").onclick = function() {
var ul = document.getElementsByTagName("ul")[0];
// pseudo-swapping: insert "child2" before "child0"
// (indexes are 1 and 5 because of the TextNodes between list nodes)
ul.insertBefore(ul.childNodes.item(5), ul.childNodes.item(1));
}
});
所以点击交换按钮会发生这种情况:
这些物品确实是交换的。但不知怎的,在(比如说1/4)秒后它们会恢复到原来的位置,即自动向后旋转。
我的问题是:为什么?
PS:代码仅用于教育目的,我只是试图了解幕后发生的事情,所以请不要发布任何替代的jQuery方法。
答案 0 :(得分:4)
$(document).ready(function(){
document.getElementById("swapButton").onclick = function(e) {
e.preventDefault();
var ul = document.getElementsByTagName("ul")[0];
ul.insertBefore(ul.childNodes.item(5), ul.childNodes.item(1));
}
});
这是因为按钮将页面重定向到同一页面。并且还原所有。您需要阻止按钮的默认行为。