通过JQ动态添加的新元素,不能被原函数所遍历,求助

gladosAI 2016-03-29 06:11:11

    
<script type="text/javascript">
$(document).ready(function () {
$("div#labrow1>span").click(function () {
var $lab = $(this);
$lab.clone().appendTo("#labrow2");
$lab.remove();
});
$("div#labrow2>span").click(function () {
var $lab2 = $(this);
$lab2.clone().appendTo("#labrow1");
$lab2.remove();
});
});
</script>


以上代码的目的是为了,当点击div1中的span时,克隆点击目标,然后添加到div2中,当点击div2中的span时,克隆点击目标,然后添加到div1中。


但问题来了,以div1中的span1与div2中的span2为例。当点击span1时,span1添加到div2中,此时的span1属于div2的一个子元素,同时被删除。
(审查元素例:
<div1 id="labrow1"></>
<div2 id="labrow2"><span2></><span1></></>)
而再次点击span1时(此时是div2子代),并不能被添加回div1中!
也就是,新添加进入span2的dom并不能被jq语句$("div#labrow2>span"),所遍历到。同样情况,从div2克隆的span2新加入到div1中也不能被遍历到。
问题感觉并不出在遍历上,$("div#labrow2>span") 在后来 我直接改为$(".label") 也不行。
另外,新加入到div2的span 也不知为什么挤到一块,而不是每个span都有间隔的原有格式。从审查上看一点问题都没有。

这个问题,不知道出错在哪里,会是BUG吗?或者说这并不是动态遍历,只是初始时遍历了一道,新加入的元素并不能遍历????
...全文
153 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gladosAI 2016-03-29
  • 打赏
  • 举报
回复
无意间被我发现了,原来<span></><span></>与<span></> <span></>不一样,大意了。好了,结案。感谢
gladosAI 2016-03-29
  • 打赏
  • 举报
回复
我试了下确实用 on 以后就好了,没想到会是版本问题,不过元素堆积无格式问题还存在
gladosAI 2016-03-29
  • 打赏
  • 举报
回复
谢谢,有点不明白,你是说一开始遍历不存在?为什么,不因该是先遍历所有div2下的span之后再点击,之后克隆吗?我觉得是一开始存在,之后不存在。否则一开始不存在的话,岂不是没有dom可点?我是jq1.12的,确实我看的一直是老版本资料
xuzuning 2016-03-29
  • 打赏
  • 举报
回复
这是对的! 因为一开始,$("div#labrow2>span") 并不存在,所以 onclick 并没有绑定成功,自然也就不会有响应了 $("div#labrow2>span").click(function () { 对于 jq 1.8.3 及以下应写作 $("div#labrow2>span").live(function () { 对于 jq 1.8.3 以上应写作 $("div#labrow2").on('click', 'span', function () {
gladosAI 2016-03-29
  • 打赏
  • 举报
回复

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧