Чередование таблицы: ошибка с tr: nth-child td в Chrome / Safari - PullRequest
2 голосов
/ 28 ноября 2011

Я пытаюсь разделить ячейки таблицы в строках с помощью JavaScript, основываясь на позиции их строки в таблице и ее значении, поэтому я решил использовать tr:nth-child(i) td, чтобы получить только ячейки (игнорируя th) ...

Вот скрипка, чтобы показать проблему (ошибка?), Которую я обнаружил: http://jsfiddle.net/redroot/pBe94/. Как вы, вероятно, можете видеть, я чередую элементы td в первых четырех строках тела таблицы. , В Chrome и Safari только первая ячейка найдена во 2-й и 3-й строках, тогда как, если я найду строку в первую очередь, тогда используйте find("td"), она отлично работает, как показано в 4-й строке.

Сначала я подумал, что это моя разметка, но, кажется, все в порядке, и она отлично работает в Firefox. Так что я немного озадачен, любая помощь будет признательна!

(что-то происходит с document.querySelectorAll в моих тестах, только в Chrome и Safari.)

1 Ответ

3 голосов
/ 28 ноября 2011

Да, похоже, действительно есть какая-то ошибка WebKit. Я также испытывал это ранее здесь , но ошибка, по-видимому, еще не была исправлена.

Одна вещь, которую нужно сделать, это заставить Sizzle делать выбор вместо нативного движка WebKit:

$.expr[":"].dummy = function() {
    return true;
};

Тогда вы можете использовать:

$("#rows tbody tr:nth-child(1) td:dummy").css("background-color","#e0e0e0");

Поскольку :dummy изначально недоступен, jQuery будет использовать Sizzle (свою пользовательскую библиотеку выбора). Поступать таким не-нативным способом - это, как всегда, снижение производительности.

http://jsfiddle.net/pBe94/2/

...