如何避免jQuery调用引起Firefox警告

How to avoid a jQuery call that induces a Firefox warning?

本文关键字:Firefox 警告 调用 何避免 jQuery      更新时间:2023-09-26

我有一个决斗列表框与'选择全部'选项,和'选择全部'背后的javascript是:

$('#' + source).remove().appendTo('#' + destination);

在源列表框包含几千个条目的情况下,我得到一个"警告:无响应的Javascript"消息在Firefox中仅 (Chrome工作正常)。最糟糕的是,如果我在消息之后点击"继续",操作就永远不会完成。FF版本为41.0.1。

如果我理解FF在做什么,我猜它怀疑有一个很长的(可能是递归的)循环,并试图拦截它,但我不认为是这种情况,如果它这样做,我不能释放给人们。

是否有任何方法可以改变javascript,使FF不抱怨?是否有一种更有效的纯JS方式来完成.appendTo(),不会导致FF困扰?

为什么呼叫remove ?appendTo将移动元素;这里没有理由把appendTo链到remove上…正如James所说,在DOM中拥有数千个节点并不是很好的用户体验,但无论哪种方式,代码都应该清理为:

$('#' + source).appendTo('#' + destination);

尝试逐个执行函数:

第一个$('#' + source).remove();

Then $('#' + source).appendTo('#' + destination);

使用console.log('this is what happens now')函数查看执行停止的位置

还有,试着用:

来包装有问题的代码
window.onload = function() {
    // your code here
};