jQuery-使用appendTo移动元素无法正常工作

问题描述 投票:1回答:2

我想通过点击事件将某些h3标签从顶部div移动到底部div,然后将[[相反移动。一切正常,直到我单击最近移动的元素以查看相反的动作。

例如,我单击

项目1

。它到达底部div。再次单击项目1,它不起作用。为什么?

$("document").ready(function() { $("div#top h3").click(function(e) { $(e.target.tagName + "#" + e.target.id).detach().appendTo("div#down"); }); $("div#down h3").click(function(e) { $(e.target.tagName + "#" + e.target.id).detach().appendTo("div#top"); }); });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="top">
  <h1>Top</h1>
  <h3 id="th3-1">Item 1</h3>
  <h3 id="th3-2">Item 2</h3>
  <h3 id="th3-3">Item 3</h3>
</div>

<div id="down">
  <h1>Down</h1>
  <h3 id="dh3-1">Item 4</h3>
  <h3 id="dh3-2">Item 5</h3>
  <h3 id="dh3-3">Item 6</h3>
</div>
javascript jquery
2个回答
4
投票
由于要基于元素的位置具有动态行为,因此需要使用event delegation

jQuery(function ($) { $("#top").on('click', 'h3', function (e) { $(this).appendTo("#down"); }); $("#down").on('click', 'h3', function (e) { $(this).appendTo("#top"); }); });

演示:Fiddle

0
投票
您需要告诉它以确定H3在哪里单击并相应移动。

$("document").ready(function() { $("div > h3").click(function(e){ if($(this).parent().attr('id') == 'top') $(e.target.tagName+"#"+e.target.id).detach().appendTo("div#down"); else $(e.target.tagName+"#"+e.target.id).detach().appendTo("div#top"); }); });

这里是demo
© www.soinside.com 2019 - 2024. All rights reserved.