javascript - 交换 3 个 div 并使选择的 div 移至中心

标签 javascript html jquery css swap

我有三个 div,我希望每次单击任何 div 时,它都会与位于中心的第二个 div 交换。

我已经尝试过这样的方法,但它不起作用:

function swapDiv(event, elem) {
  elem.parentNode.insertBefore(elem, elem.parentNode.secondChild);
}
<div class="all-div-container">
  <div class="div1" onclick="swapDiv(event,this);">
    1
  </div>
  <div class="div2" onclick="swapDiv(event,this);">
    2
  </div>
  <div class="div3" onclick="swapDiv(event,this);">
    3
  </div>
</div>

1 2 3,当我点击3时,结果必须是1 3 2,并且我点击1 它必须是3 1 2

最佳答案

function swapDiv(event, elem) {
    // get all elements in .all-div-container
    const allElements = [...elem.parentElement.children];
    // get index of target elem
    const targetIndex = allElements.indexOf(elem);
    // get center element
    const centerElem = allElements[1];
    // exit from function if we clicked at center elem
    if (elem === centerElem) return;
    // move center element
    if (targetIndex === 0) {
        elem.parentElement.prepend(centerElem)
    } else {
        elem.parentElement.append(centerElem)
    }
}
<div class="all-div-container">
    <div class="div1" onclick="swapDiv(event,this);">
        1
    </div>
    <div class="div2" onclick="swapDiv(event,this);">
        2
    </div>
    <div class="div3" onclick="swapDiv(event,this);">
        3
    </div>
</div>

关于javascript - 交换 3 个 div 并使选择的 div 移至中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72234748/

相关文章:

javascript - 如何重写 javascript 闭包函数调用

javascript - 光滑的旋转木马不工作

javascript - “安全”过滤器在 textarea 中不起作用 - django

php - YouTube存储在数据库中的嵌入代码未出现在HTML表单中

javascript - 不匹配特定字符串后的字符串的正则表达式

javascript - JavaScript 中的激活和变量对象?

javascript - 在html中动态切换字段集

javascript - 如何在 jQuery 中上传图像后在输入字段中显示图像文件名

javascript - jQuery 创建和追加多个元素

javascript - 简化包含多个条目的 JavaScript 代码