поведение jquery attr в версии 1.6

#jquery #attributes #prop

#jquery #атрибуты #prop

Вопрос:

Я создал страницуздесь

Он отлично работал с версией 1.5

теперь с 1.6 я получаю эту ошибку в firebug

  elem.getAttribute is not a function
 [Break On This Error] ret = elem.getAttribute( name ); 
  

и в chrome почти то же самое

  Uncaught TypeError: Object #<HTMLDocument> has no method 'getAttribute'
  

Как это исправить??
Должен ли я изменить все на prop, как в jquery 1.6 api
http://api.jquery.com/prop /

Комментарии:

1. Что это за вызов jQuery, который приводит к ошибке?

2. Я понятия не имею, что вызвало проблему???

3. Здесь объясняется причина: edgarinvillegas.wordpress.com/2011/05/10 /…

Ответ №1:

Проблема, я думаю, в вашей библиотеке jquery.getUrlParam.js . Это содержит строки, подобные следующим:

 if ($(this).attr("nodeName")=="#document") {
  

Это работало в jQuery <= 1.5, потому что attr использовались как свойства, так и атрибуты. jQuery 1.6 устранил эту путаницу, которая создала некоторые проблемы для кода, который полагался на это поведение. Это пример кода, который не работает из-за изменения.

Исправление было бы

 if (this.nodeName === "#document") {
  

Вы должны быть в состоянии исправить это в своем коде; вероятно, также разумно сообщить об этом автору плагина.

Еще один момент заключается в том, что jQuery, вероятно, должен выдавать лучшее сообщение об ошибке при попытке attr с document объектом, поскольку document узел (в отличие от узлов элемента) не имеет getAttribute метода. Это причина вашего загадочного сообщения об ошибке.


Редактировать 11 мая Похоже, что ошибка здесь исправлена в jQuery 1.6.1. Эта фиксация в источнике jQuery означает, что jQuery возвращается к prop методу, если у выбранного узла нет getAttribute метода.

Это, наряду с другими изменениями в 1.6.1, должно сделать обновление с <1.6 до 1.6.1 плавным.

Комментарии:

1. да, это помогло … спасибо за помощь… это была громоздкая библиотека, и я ею не пользовался, хотя…

2. как вы думаете, это ошибка или улучшение jquery… понятия не имею, хотя …;-)

3. Может быть, это полезно для вас: edgarinvillegas.wordpress.com/2011/05/10 /…