Селектор jQuery не работает правильно

Ладно, я не могу понять, что я делаю не так...

Возьмите следующий селектор jQuery...

$('tr[batchid]:has(span.chkselb input:checked) span[id=assetcount]')

Это возвращает 2 элемента. Но если я сделаю следующий селектор:

$('tr[batchid]:has(span.chkselb input:checked) span#assetcount')

Это возвращает 0 элементов. Разве эти два селектора не идентичны во всех смыслах и целях?
Или есть какое-то странное взаимодействие с оператором ":has" или что-то в этом роде? У меня это работает с первым оператором, но мне очень любопытно, почему второй (мой оригинальный селектор) не работает. Любые идеи?


person eidylon    schedule 23.11.2009    source источник


Ответы (1)


$('tr[batchid]:has(span.chkselb input:checked) span[id=assetcount]') не должен возвращать два элемента, так как идентификаторы должны быть уникальными.

Это говорит мне о том, что вы повторно используете идентификаторы, и я предполагаю, что первый, который вы используете, не соответствует tr[batchid]:has(span.chkselb input:checked), поэтому второй селектор не возвращает никаких строк.

Вы должны сделать идентификаторы уникальными.

person Greg    schedule 23.11.2009
comment
Итак, я предполагаю, что это должно быть что-то вроде того, как jQuery проверяет селектор id (#) по сравнению с тем, как он проверяет селектор атрибута ([]), да? Я использовал атрибут id для идентификации диапазона в строках в элементе управления DataGrid (привязанном программно). Вместо этого я изменил его на fieldid= и соответствующим образом скорректировал свой селектор. Спасибо за объяснение! - person eidylon; 23.11.2009