2009-03-30 3 views
28

Мне нужно найти и перебрать все дочерние элементы с определенным атрибутом. Следующий код работает отлично в JQuery 1.2.6, но бросает исключение в 1.3.2jquery v1.3.2 найти элемент по атрибуту

$(parentElement).find('*[@someAttributeName]').each(function(index){ 
    doSomething(this); 
}); 

Что такое правильный путь для достижения этой цели?

ответ

40

Просто избавитесь от @, я верю.

$(parentElement).find('[someAttributeName]').each(function(index){ 
    doSomething(this); 
}); 

Из JQuery selector документы:

Примечание: В JQuery 1.3 [@attr] стиль селекторов были удалены (они были ранее устаревшими в JQuery 1.2). Просто удалите символ «@» из ваших селекторов , чтобы они снова работали .

+0

символ @ был от первоначального выбора типа XPath, IIRC – alex

+0

любым способом нахождения acording в Attribué равна определенной стоимости? –

+1

Вы можете использовать простой '$ ('div [someAttributeName]'). Each()' для поиска по атрибуту –

2

Обратите внимание на «@», прежде чем имя атрибута устарело с версии 1.2.

$(parentElement).find('*[someAttributeName]').each(function(index){ 
    doSomething(this); 
}); 

Просто удалите его, и вы хорошо пойдете.

2

[@attribute] нотация устарела в jQuery 1.3. Удалите знак @, и вы хорошо пойдете.

0

Не работает для меня в IE, когда я хочу найти ввод с required="".

Работы, когда я перехожу на required="required". Может быть, другие комбинации также работают https://stackoverflow.com/a/3012975/588759

1

Ithink это лучший способ найти и может что-то изменить его

$('.youritem').each(function(){ 
          if($(this).attr('title') == 'add image') 
              $(this).attr('id','imageuploader'); 

         });