Как стать автором
Обновить

Небольшое замечание для тех, кто переходит на 1.4.3

Время на прочтение1 мин
Количество просмотров597
Особенность в 1.4.3 — проявляется в FF3.6.11

Простой пример:
<table>
	<tr>
		<td myAttr='1'>1.1</td>
		<td>1.2</td>
		<td>1.3</td>
		<td myAttr='1'>1.4</td>
	</tr>
	<tr>
		<td myAttr='1'>2.1</td>
		<td>2.2</td>
		<td>2.3</td>
		<td myAttr='1'>2.4</td>
	</tr>
</table>


Ранее, до 1.4.3, результат выполнения следующей jQuery-инструкции был равен 2 (выбраны элементы 1.2 и 1.3)
    $('tr').eq(0).find('td').eq(0).nextUntil('td[myattr=1]').length


В 1.4.3 результат будет равен… 3 (выбираются элементы 1.2, 1.3 и 1.4).
Судя по всему, дело в изменении алгоритмов поиска jQuery а именно, переходе на использование matchesSelector. Чтобы вернуть поведение в нужное русло надо взять значение аттрибута в кавычки:

    $('tr').eq(0).find('td').eq(0).nextUntil('td[myattr="1"]').length


Легкой отладки тебе, %username%!

UPD: Что интересно, IE8 (а скорее всего IE<9) не подвержен «багу». У него просто не реализован matchesSelector!

UPD: Есть подозрение, что это баг в FF3.6.11. В Chrome7 (у него есть matchesSelector!) баг не воспроизводится.
Теги:
Хабы:
Всего голосов 8: ↑6 и ↓2+4
Комментарии4

Публикации