2013-04-10 3 views
0

Это не работаетJQuery селектор не может найти элемент, который существует

var name= "#443.selected:first"; 
selectedEntity = $(name).attr('entityId'); 

Это работает

var name= "li.selected:first"; 
selectedEntity = $(name).attr('entityId'); 

selectedEntity не определен, но элемент существует с идентификатором = «443» класс = "выбрано ».

Почему не первый пример работает?

+4

Идентификаторы элементов не могут начинаться с цифр ... – BenM

+0

@benM Я не могу изменить ID. какая работа? – code511788465541441

+2

Ну, идентификаторы должны быть уникальными в DOM, поэтому указание класса и ': first' должно быть излишним. Можешь подтвердить? – BenM

ответ

1

Вы можете использовать селектор атрибута:

$('[id="443"].selected:first') 

Смотреть это jsFiddle demo

+1

Вы также можете использовать селектор id. http://jsfiddle.net/LGmxZ/1/ –

+0

Итак, я действительно не понимаю, в чем проблема, поскольку отчеты OP не работают ...;) +1. – BenM

1

Хотя в HTML, кроме идентификаторов HTML5, которые начинаются с числа не допускаются, ваш селектор должен работать (working Demo). У вас должна быть ошибка в другом месте вашего кода и/или разметки.

Есть несколько вопросов, которые вы должны решить:

  1. идентификаторы должны быть уникальными в противном случае ваш HTML является недействительным
  2. overqualifying-идентификатор Selector плохо сказывается на производительности из-за 1), даже не нужно
  3. ID-Selectors возвращают только первый элемент, поэтому использование :first бесполезно (а также влияет на точку 1)
  4. Не используйте настраиваемые атрибуты, такие как entityId. Вместо этого используйте data- prefix. Затем вы можете использовать метод jQuerys data для получения/установки этих атрибутов. (Остерегайтесь, однако, что вы не можете использовать camelCase).
Смежные вопросы