Я думаю, что поиск по этому селектору $ ('# thetable'). Find ('tr.listing: checkbox') - это то, что отнимает время в IE.
Есть пара вещей, которые вы могли бы сделать ...
Похоже, вы показываете набор результатов в таблице. В этом случае вы можете захотеть реализовать пейджинг и попросить скрипт вернуться на сервер для получения дополнительных результатов в событии смены страницы. Это будет означать меньшее количество DOM-узлов для обработки и должно позаботиться о проблеме сценария остановки.
Другой подход, который вы могли бы попробовать, - это задать предсказуемые идентификаторы ваших флажков, а затем сделать прямой выбор, например, $ ("# thetable_checkbox_" + checkboxid), а затем с помощью forloop перебрать результаты, изменив выбранный флажок.
Вот пример псевдокода
for (int x = 0; x < numResults; x++) {
setTimeout(function() {
$("#thetable_checkbox_" + x).bind(function() {
clickEventFunction()
});
}, 0);
}
Где ваши идентификаторы флажков были сгенерированы с идентификаторами, такими как thetable_checkbox_1 и т. Д.
Подход, который вы упомянули для разбиения скрипта с помощью setTimeout, также будет работать, но вам нужно избегать селекторов jQuery, которые могут занять много времени. Вы также можете установить значение тайм-аута на 0, так как вы хотите, чтобы он работал, как только браузер будет готов. Установка времени ожидания равным 0 приводит к тому, что браузер выполняет все ожидающие операции, прежде чем вернуться к вашему сценарию. Если скрипт долго выполняется, вы должны отобразить модальное диалоговое окно загрузки, чтобы страница отображалась пользователю только тогда, когда она готова.