Поведение jquery attr в версии 1.6 - PullRequest
1 голос
/ 09 мая 2011

Я сделал страницу h ere

Работало нормально с версией 1.5

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

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

и в хроме почти одинаково

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

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

1 Ответ

0 голосов
/ 09 мая 2011

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

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

Это работало в jQuery <= 1.5, потому что <code>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 плавным. </p>

...