Я использую jQuery для перебора таблицы HTML и динамического заполнения номеров строк каждой строки (путем заполнения номера строки в текстовом поле):
function updateRowNums() {
$('#myTable').find('tr').each(function(index) {
$(this).find('input[id$="_rowOrder"]').val(index);
});
}
Эта функция вызываетсяunder:
$(document).ready(function() {
// .. code truncated ... //
updateRowNums();
});
Это отлично работает под Firefox.Однако в Chrome (пробовал и 5.x, и 9.x (бета-версия)), а иногда и Safari, это приводит к заполнению множества других полей, которые даже не соответствуют критериям:
'input[id$="_rowOrder"]'
,с номерами строк.Таким образом, в основном это разбрасывает числа вокруг в других, не связанных текстовых полях ...
Я почти уверен, что это какая-то ошибка Chrome или jQuery, но я просто проверяю, так как это выглядит довольнобазовый функционал.Кстати, если я введу предупреждение в коде, то оно будет нормально работать в Chrome, так что это может иметь какое-то отношение ко времени загрузки документа в Chrome:
function updateRowNums() {
$('#myTable').find('tr').each(function(index) {
alert("XXXXXXXXXXXXXXXXXXX");
$(this).find('input[id$="_rowOrder"]').val(index);
});
}
Перейдите сюда, чтобы увидеть пример:
http://jsfiddle.net/eGutT/6/
В этом примере необходимо воспроизвести следующие шаги:
- Перейти к URL-адресу с помощью Chrome (или Safari - иногда также не удается)).
- Вы заметите, что на данный момент все работает так, как ожидалось (т. Е. Числа, заполненные 1-м столбцом)
- Нажмите на ссылку «NAVIGATE AWAY».
- Нажмите назад
- Вы увидите числа, заполненные в верхней строке И внизу первого столбца
Вы заметите, что я добавил консольное ведение журнала, чтобы вывести идентификаторы элементов, для которых изменено их значение.Вывод этого журнала:
one_rowOrder
two_rowOrder
three_rowOrder
, который указывает, что были затронуты только 3 элемента.Однако из результата видно, что в 5 элементах есть числа.
Спасибо, Гален