【发布时间】:2014-08-28 16:40:21
【问题描述】:
我想通过点击事件将一些 h3 标签从顶部 div 移动到底部 div 和 相反。
一切正常,直到我单击最近移动的元素以查看相反的操作。
例如,我点击Item 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>
【问题讨论】:
-
您的代码将
click函数应用于匹配元素的current 集(文档准备就绪)。单击#top中的元素可以工作,因为它附加了事件侦听器。然后它被移动到#down,但点击功能仍然存在——它将在随后的点击中重新附加到#down。在this fiddle 中,单击顶部的项目 1,然后单击 2。他们将被移动到下。然后点击第1项,看到它被追加到了Down的末尾。再次单击第 2 项,结果相同。带有.on()的事件委托允许您使用“实时”选择器。
标签: javascript jquery