Javascript 使用事件传播在div选择和父选择之后将div子级从一个父级移动到另一个父级

Javascript 使用事件传播在div选择和父选择之后将div子级从一个父级移动到另一个父级,javascript,Javascript,我正在建造河内的游戏塔,除了如何按以下顺序将一个div(我的磁盘)从一个父节点(棒)移动到另一个父节点之外,我已经弄清楚了一切:单击磁盘(div/子节点)进行选择,然后单击要将磁盘移动到的棒节点(父节点) 为了解决这个问题,我尝试在一个事件处理程序中使用多个事件处理程序,并在div被移动到新的父节点后使用removeEventHandler。我也尝试过使用StopperPogation来防止冒泡,但这两种方法都不适用于我 // Moving the blocks from one contain

我正在建造河内的游戏塔,除了如何按以下顺序将一个div(我的磁盘)从一个父节点(棒)移动到另一个父节点之外,我已经弄清楚了一切:单击磁盘(div/子节点)进行选择,然后单击要将磁盘移动到的棒节点(父节点)

为了解决这个问题,我尝试在一个事件处理程序中使用多个事件处理程序,并在div被移动到新的父节点后使用removeEventHandler。我也尝试过使用StopperPogation来防止冒泡,但这两种方法都不适用于我

// Moving the blocks from one container to the other
// use 'prepend' in order to insert new disk at the top of the parent node as the first child


function move() {
  for (let i = 0; i < disks.length; i++)
    disks[i].addEventListener('click', function (evt) {
      // activeDisk = evt.target.dataset.value

      // give red border on block when selected
      disks[i].style.border = 'Red 2px Solid';
      console.log(disks[i])

      // after  disk is selected, click on desired stack to move disk to
      stackA.addEventListener('click', function (evt) {
        stackA.prepend(disks[i])
        win(evt)
        })
      stackA.removeEventListener('click', function(){
        return console.log(stopped)
      })

      stackB.addEventListener('click', function (evt) {
        stackB.prepend(disks[i])
        win(evt)
      })
      stackB.removeEventListener('click', function(){
        return console.log(stopped)
      })
      stackC.addEventListener('click', function (evt) {
        stackC.prepend(disks[i])
        win(evt)
        })
        stackC.removeEventListener('click', function(){
          return console.log(stopped)
        })
        check(evt)
      })
      }
//将块从一个容器移动到另一个容器
//使用“prepend”在父节点顶部插入新磁盘作为第一个子节点
函数move(){
for(设i=0;i

我希望我的磁盘移动到容器中,然后取消选择,以便单独移动它们。我可以移动它们,但当我选择它们,然后尝试取消选择它们以单独移动另一个磁盘时,它不起作用。

您不能像这样移除EventListener,它将不起作用。 您必须创建一个侦听器函数,并在以后添加或删除该函数

function exampleFunction(){ // your logic here }
stackA.addEventListener("click", exampleFunction);
stackA.removeEventListener("click", exampleFunction);