向上移动列表项

时间:2013-01-17 09:57:38

标签: javascript dom

Hello编码器我有以下脚本:http://jsfiddle.net/UqDJk/241/

我希望moveUp函数将列表移动到一个位置..

var moveUp = function (up, direction) {
  var btn = up.target,
    li = btn.parentNode;

  li.insertBefore(li[1].nextSibling)
}

有一种简单的方法吗?附:请纯粹的javascript。

1 个答案:

答案 0 :(得分:3)

我想你想要:

li.parentNode.insertBefore(li, li.previousSibling);

但请注意,第一个元素li.previousSiblingnull,在这种情况下,会将附加到列表中。所以你必须添加一个检查以避免移动第一个元素:

if (li.previsousSibling) {
    li.parentNode.insertBefore(li, li.previousSibling);
}

代码中的问题:

  • DOM操作方法始终(?)在父节点上工作,而不是在节点本身上工作。如果您不确切知道方法的工作原理,请查看MDN,例如google for mdn insertBefore
  • li[1]尝试访问1的{​​{1}}属性,由于li是DOM元素对象,因此不存在。