LINUX.ORG.RU

Релиз jQuery 1.6

 , , ,


0

1

Библиотека jQuery помогает легко получать доступ к любому элементу DOM, обращаться к атрибутам и содержимому элементов DOM, манипулировать ими. Также библиотека jQuery предоставляет удобный API по работе с Ajax.

В новой версии:

  • улучшение производительности по сравнению с предыдущими версиями
  • отделены свойства элементов от их атрибутов, для доступа к атрибутам остался метод .attr(), а доступа к свойствам элемента теперь нужно делать через .prop()
  • добавлена возможность влиять на работу функций .attr() через объект jQuery.attrHooks и на функцию .val() через объект jQuery.valHooks.
  • jQuery.map() может принимать первым аргументом не только массив, но и объект.
  • разработчики добавили возможность изменения css-свойств элементов функцией .css() в зависимости от их значения с помощью инструкций «+=» и "-="
  • внесены улучшения и в deferred-объекты (способны регистрировать множество обработчиков в очередь, вызывать зарегистрированные в очереди обработчики и переключать состояние на «завершено» или «ошибка» для синхронных или асинхронных функций)
    ... и многое другое

Перед обновлением обязательно изучите Changelog, в новом релизе есть важные изменения, которые несовместимы с предыдущими версиями jQuery!

краткое описание

>>> Подробности

>отделены свойства элементов от их атрибутов, для доступа к атрибутам остался метод .attr(), а доступа к свойствам элемента теперь нужно делать через .prop()

О чём это вообще?

Deleted
()
Ответ на: комментарий от Deleted

Также теперь отделены свойства элементов от их атрибутов. Для доступа к атрибутам остался метод .attr(), а для доступа к свойствам элемента, которые могут меняться динамически (значения атрибутов при этом не меняются), теперь нужно делать через .prop(). Самым простым примером может быть поведение <input type=«checkbox» />: в 1.5 вызов .attr('checked') возвращал true/false в зависимости от установки флага, в версии же 1.6 .attr('checked') вернёт строковое значение, записанное в атрибут, или undefined, если атрибут отсутствует, а состояние флага нужно получать через .prop('checked').

Возможно что я как то неправильно истолковал.

splinter ★★★★★
() автор топика
Ответ на: комментарий от Deleted

С оригинала:

.prop(), .removeProp(), and .attr()

In the 1.6 release we’ve split apart the handling of DOM attributes and DOM properties into separate methods. The new .prop() method sets or gets properties on DOM elements, and .removeProp() removes properties. In the past, jQuery has not drawn a clear line between properties and attributes. Generally, DOM attributes represent the state of DOM information as retrieved from the document, such as the value attribute in the markup <input type="text" value="abc">. DOM properties represent the dynamic state of the document; for example if the user clicks in the input element above and types def the .prop("value") is abcdef but the .attr("value") remains abc.

splinter ★★★★★
() автор топика
Ответ на: комментарий от splinter

Может просто пример вставить? Нагляднее.

Deleted
()

Ну и почему это мини-новость?

jQuery важнее, чем весь этот qcrap в предыдущих новостях в разы. На ней треть интернета работает.

anonymous
()
Ответ на: комментарий от xorik

> ЛОР тоже гламурный? :)

С темой танго — да.

Igron ★★★★★
()
Ответ на: комментарий от splinter

а зачем это было сделано? Какие цели преследовались? Оптимизация? Да ну ее нафиг такую оптимизацию, теперь надо думать что ты хочешь получить, attr или prop. То что было получено на странице html'ом это attr, то что изменяется в рантайме - это prop, getProp('value') != getAttr('value'), если я правильно понял.
Нафига весь этот головняк? Что, кому то нужны старые значения аттрибутов, которые были в момент инициализации страницы? Не думаю. Быстрее стало работать? Да, но какой ценой! Куча кода написанного потеряла совместимость.

FollowTheRabbit
()
Ответ на: комментарий от FollowTheRabbit

Впринципе правильно что разделили, но мне одно не понятно из логики их решения, а именно: из описания четко следует, что старое поведение attr() теперь исполняет prop(), в то время как новый attr() ведет себя иначе. Я не могу понять, почему нельзя было оставить у attr() старое поведение, а для нового поведения ввести новую функцию? Неужели только из-за названия функции?

aix27249
()
Ответ на: комментарий от FollowTheRabbit

В традиционной объектной модели много такой вот крайне сомнительной фигни. Обратная совместимость, наверное. Но зачем оно более высокоуровнему фреймворку, задача которого улучшать и упрощать - непонятно. ИЧСХ именно совместимость и поломалась

wxw ★★★★★
()
Ответ на: комментарий от aix27249

> Неужели только из-за названия функции?

Думаю, что да. И более того - давно пора.

Terrens
()
Ответ на: комментарий от Igron

> На ней треть гламурного вебдванольного интернета работает.

вы явно не в курсе, что такое jQuery. внезапно: это не только (и не столько) гламурные эффекты и анимированные кнопочки.

boo32
()

Jquery не нужно. Mochikit форева, гораздо более быстрая и удобная либа.(сигналы-слоты класс)

stalkerg ★★★★★
()

ненавижу джаваскрипт. Тупой язык. Да еще с кучей несовместимых реализаций.

AVL2 ★★★★★
()
Ответ на: комментарий от stalkerg

>Mochikit форева, гораздо более быстрая и удобная либа.(сигналы-слоты класс)

Наворачивание класс-ориентированного подхода на язык с прототипным ООП есть абсолютный костыль, который нужен только тем, кто не может мыслить не в рамках классов.

Это как php.js, в котором функции пхп реализованы через js, причем часто js вариант изначально удобнее. Но тупые пхп-кодеры не могут осилить хоть что-то, отличающееся от их единственного языка.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.