首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jquery AppendTo bug

Jquery AppendTo bug
EN

Stack Overflow用户
提问于 2015-04-24 01:43:43
回答 1查看 114关注 0票数 4

我正在使用一些jquery,并发现jquery .appendTo()函数的奇怪行为。

看看这段代码这里

单击第一列的每一项时,单击的项将追加到第二列。

如果单击items 34,一切都将按预期的方式工作:它们将按单击它们的顺序追加。当您单击item 1时,他也将被正确地追加。

问题是当您单击item 2时。此项位于项1中。

这个项目不是附加到div的末尾,他‘是附加在他的老父母的顶部!

看看这些图片:

现在,我所期待的与我得到的相比:

如果您再次单击项目2,他将被追加到div的末尾。

这种行为有什么解释吗?实际上是个窃听器?

我怎么才能解决这个问题?

Ps: Jquery 1.10.1

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-24 01:49:55

当您单击第2项时,“单击”事件将同时发送给 item 2 item 1,因为项目2(当“单击”发生时)是项目1的子项。事件会弹出,父项也会得到。

因此,单击第2项,事件处理程序将运行。项目2被追加到目标。然后,事件冒泡到项1,然后事件处理程序再次运行。现在,项目1被追加在第2项之后,因为(此时)项2不再是项目1的子项。

裁决:不是一个bug。

您可以更改处理程序以防止这种情况发生:

代码语言:javascript
复制
$('.item').on('click', function(e){
    // Append clicked item on destiny div
    $(this).appendTo($('.destiny'));
    e.stopPropagation(); // stop the event from bubbling further up
});
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29837294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档