私は何年も前からあるレガシープロジェクト(Rails 3.1より前)に取り組んでいるので、プロトタイプとjQueryがいたるところにあり、すべてのプロトタイプをjQueryで書き直すという一般的なアイデアがあります。
私は、オートコンプリート スタイルのドロップダウンの問題に取り組んでいます。これにより、DOM の領域にデータが入力されます。これは正常に機能しますが、このオートコンプリートの特定のインスタンスにはアイテム制限があります。そのため、データを追加するときに、特定のセレクターが N 個以上存在するかどうかを確認し、最後のセレクターを削除します。
これを行うための私の機能は簡単です:
function remove_items(num, selector) {
while (selector.length >= num) {
selector[selector.length-1].remove()
}
};
jQuery で選択されたオブジェクトの制限と配列を渡します。制限が必要です。
問題は、セレクターの要素の .remove() が、jQuery オブジェクトであっても、Prototype メソッドを使用して DOM から削除することです。次に、セレクター配列が変更されていないため、prototype メソッドでループが再度実行され、要素が DOM にないため、エラーがスローされます。
ループの前にセレクターの長さのカウント変数を作成し、これを毎回 1 ずつ減らしましたが、明らかにこれは理想的なソリューションとは言えません。
なぜこれが起こっているのか、またはそれを止める方法を知っている人はいますか?