У меня проблема с моим селектором jQuery. Ниже приведены результаты от Firebug отладчика расслоения плотного:jQuery gt (0) selector issue
$("#tblComponentData tr:not([disabled=disabled])").length 9
$("#tblComponentData tr:not([disabled=disabled]):gt(0)").length 5
Как можно видеть, что есть только одна разница между этими селекторами: второй селектор имеет «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........
Некоторые строки в таблице отключены (отмечены атрибутом [отключено = отключено]). Цель моего селектора - связать обработчик кликов с элементами, которые не отключены.
Строки могут быть включены динамически с помощью javascript. Поэтому мне нужно отпереть обработчик кликов из всех строк в таблице, а затем снова использовать мой селектор и обработчик привязки. Итак, мой селектор работает много раз. Первые пару раз он выбирает правильные строки, но в третий раз выбирает только те элементы, которые были выбраны в предыдущее время. Такое поведение выглядит как селектор кешей jQuery, но насколько я знаю, он никогда этого не делает.
Кроме того, эта проблема возникает во всех браузерах, кроме IE (я тестировал на Firefox, Chrome, Safari и Opera)
Наконец, я установил эту проблему, добавив класс «componentDataHeader» в первой строке в таблице а затем используется следующий селектор:
$("#tblComponentData tr:not([disabled=disabled]):not(.componentDataHeader)")
Он работает правильно во всех браузерах. Но довольно интересно, почему gt (0) не работает.
Спасибо, Егор
Можете ли вы показать (или ссылку на) разметке? – James
Вы уверены, что ваша разметка действительна? –
Я уверен, что разметка действительна для IE (этот экран работает под IE в течение нескольких месяцев). Теперь я настраиваю его на работу с другими основными браузерами. – Egor4eg