У меня проблема с моим селектором jQuery.Ниже приведены результаты отладчика firebug js:
$("#tblComponentData tr:not([disabled=disabled])").length 9
$("#tblComponentData tr:not([disabled=disabled]):gt(0)").length 5
Как видите, между этими селекторами есть только 1 различие: второй селектор имеет "gt (0)".Но количество элементов из второго селектора равно 5, а из первого - 9.
Если я использую IE, у меня есть действительные результаты (второй селектор дает 8 элементов).Итак, я не могу понять, почему это возможно.Я использую jquery-1.3.2. Не могли бы вы помочь мне с этим?
Моя HTML-разметка довольно проста.См. Пример таблицы ниже:
<table id="tblComponentData" class="componentConfigurationTable">
<tr style="cursor: auto; background-color: #ffffff; color: #000000">
<td style="width: 20%">
<b>First column</b>
</td>
<td style="width: 15%">
<b>Second Column</b>
</td>
<td style="width: 30%">
<b>Third Column</b>
</td>
<td style="width: 350px">
<b>Fourth Column</b>
</td>
</tr>
<tr id='665' class='even'
type='dropdown' order='2' >
<td>First value</td>
<td>Second value</td>
<td>Third value</td>
<td style="width: 350px">
<span class="special">
</span> <span class="error">Test warning</span></td>
</tr>
etc........
Некоторые строки в таблице отключены (помечены атрибутом [disabled = disabled]).Цель моего селектора - привязать обработчик щелчков к элементам, которые не отключены.
Строки могут быть включены динамически с помощью javascript.Поэтому мне нужно отменить привязку обработчика щелчка по всем строкам таблицы, а затем снова использовать мой селектор и обработчик привязки.Итак, мой селектор запускается много раз.Первые пару раз он выбирает правильные строки, но в третий раз выбирает только элементы, которые были выбраны в предыдущий раз.Такое поведение выглядит как селектор кэшей jQuery, но, насколько я знаю, он никогда этого не делает.
Кроме того, эта проблема возникает во всех браузерах, кроме IE (я тестировал его на Firefox, Chrome, Safari и Opera)
Наконец, я исправил эту проблему, добавив класс "componentDataHeader" в первую строку таблицы, а затем использовал следующий селектор:
$("#tblComponentData tr:not([disabled=disabled]):not(.componentDataHeader)")
Он работает правильно во всех браузерах.Но довольно интересно, почему gt (0) не работает.
Спасибо, Егор