我正在处理一个已经存在多年的遗留项目(在 Rails 3.1 之前),所以它到处都有 Prototype 和 jQuery,总体思路是用 jQuery 重写所有 Prototype。
我正在处理一个自动完成样式下拉列表的问题,它将用一些数据填充 DOM 中的一个区域。这工作正常,但此自动完成的某些实例有项目限制。所以在添加数据的时候,它会检查某个选择器的数量是否超过N,并删除最后一个。
我这样做的功能很简单:
function remove_items(num, selector) {
while (selector.length >= num) {
selector[selector.length-1].remove()
}
};
我传入限制和对象数组,用 jQuery 选择,我希望有一个限制。
问题似乎是选择器中元素上的 .remove() 将使用 Prototype 方法将其从 DOM 中删除,即使它是一个 jQuery 对象。然后,因为选择器数组没有改变,循环再次使用原型方法运行并抛出错误,因为现在元素不在 DOM 中。
我在循环之前创建了一个选择器长度的计数变量,并每次将其减少一个,但显然这是一个不太理想的解决方案。
任何人都知道为什么会发生这种情况或如何阻止它发生?