code: function changePlace(targetEl, draggingEl) {
    // 如果父元素设定了固定，则不能换位置
    if (targetEl.parentNode.dropConfig && targetEl.parentNode.dropConfig.fixed) return;
    // 获取父元素的拖动序列
    const $list = getList(targetEl);
    const targetKey = targetEl.getAttribute('data-key');
    const draggingKey = draggingEl.getAttribute('data-key');
    // 获取在拖动序列中的序列号
    const targetIndex = $list.indexOf(targetKey);
    const draggingIndex = $list.indexOf(draggingKey);
    // 当拖动中的元素不在当前父元素序列中时，不执行换位
    if (draggingIndex < 0) return;
    // 当拖动元素序列大于目标元素时，放到目标元素前
    if (draggingIndex > targetIndex) {
      targetEl.parentNode.insertBefore(draggingEl, targetEl);
    }
    // 当拖动序列小于目标元素时，放到目标元素后面
    if (draggingIndex < targetIndex) {
      // 当前元素是最后一个元素时，直接在父元素上面 append
      if (!targetEl.nextSibling) {
        targetEl.parentNode.appendChild(draggingEl);
      } else {
        targetEl.parentNode.insertBefore(draggingEl, targetEl.nextSibling);
      }
    }
  }
docs: 元素位置交换