Обновление с jQuery 1.x до jQuery 2.x
Я пытаюсь перейти с jQuery 1.x на jQuery 2.x.
У меня есть jQuery 1.8 и jQueryUI 1.8, и теперь я хочу перейти на jQuery 2.x и улучшить свое веб-приложение.
Итак, мой вопрос заключается в том, что нужно изменить и удалить, например, для Ajax и событий.
Как и эти ошибки, я говорю о
Uncaught TypeError: Object [object Object] has no method 'live'
Были ли такие функции, как .on() и .ajax(), изменить? (Я знаю .live был устаревшим).
P.S. Мне нужно добавить Zurb Foundation 5, который использует jQuery 2.
Ответы
Ответ 1
Если вы планируете перейти на jQuery 1.x на jQuery 2.x, подумайте об этом и выполните следующие шаги:):
1. Больше поддержки для IE6/7/8
Я все еще думаю, что немного преждевременно отказаться от IE8, но команда не мог ждать больше. jQuery 2.0 удаляет все устаревшие IE-коды для выбора node, манипуляции с DOM, обработки событий и Ajax.
2. Пользовательская функция сборки была усовершенствована в версии 2.0
поэтому вы можете исключить из 12 неиспользуемых модулей и сжать jQuery ниже 10Kb. Модулями, которые можно опустить, являются: Список функций
Могу ли я обновить?
Важно понять, что jQuery 2.0 имеет паритет API с jQuery 1.9. Существует небольшое количество исправлений ошибок, но нет новых функций.
Однако, если вы один из тех счастливых разработчиков, которые отказались от поддержки IE6/7/8, возьмите jQuery 2.0 и не оглядитесь назад.
Ответ 2
- Не используйте опцию
offset
в свойствах позиции, например. код $element.position({my: 'center center', at: 'center center', offset: '5 -10'})
следует заменить на $element.position({my: 'center center', at: 'center+5 center-10'})
.
- Не используйте
$element.bind()
, $element.live()
, $element.delegate()
для назначения обработчика событий, используйте $element.on()
.
- Не используйте обход браузера с помощью
$.browser
, попробуйте вместо этого использовать функцию обнаружения ($.support
).
- Не используйте
deferred.isRejected()
, deferred.isResolved()
, вместо этого используйте deferred.state()
. Не используйте deferred.pipe()
, вместо этого следует использовать метод deferred.then()
.
- Не используйте метод
$elements.size()
, вместо этого используйте свойство $elements.length
. Метод .size()
функционально эквивалентен свойству .length
; однако свойство .length
является предпочтительным, поскольку оно не имеет накладных расходов на вызов функции.
- Состояние флажка/радио в событии
.trigger()
ed "click" теперь имеет то же состояние, что и в инициированном пользователем действии.
- Изменено соглашение об именах для клавиш
.data()
, например ui-dialog
вместо dialog
. (http://jqueryui.com/upgrade-guide/1.9/#changed-naming-convention-for-data-keys).
- Не используйте
$.ui.contains()
, используйте $.contains()
вместо этого.
- Каждый экземпляр виджета уже имеет уникальный идентификатор
this.uuid
и пространство имен событий this.eventNamespace = "." + this.widgetName + this.uuid
. Не создавайте подобные вещи вручную.
- Не используйте
$element.focus(n)
- он устарел. Используйте setTimeout(function() { $element.focus(); }, n);
.
- Не используйте
$element.zIndex()
- он устарел.
- Не используйте константы
$.ui.keyCode.NUMPAD_*
- они удаляются.
- Не используйте
$element.data('someWidget')
для извлечения экземпляра виджета. Используйте метод instance()
: $element.someWidget('instance')
. В отличие от других методов плагина, метод instance()
безопасен для вызова любого элемента. Если элемент не является экземпляром данного виджета, метод возвращает undefined
: $('<div></div>').dialog('instance') /* returns undefined instead of throwing Error */
.
Оригинальные руководства по обновлению и полный список изменений:
Ответ 3
В jQuery 1.9 было удалено несколько методов, которые были доступны в предыдущих версиях jquery.
Если вы используете эти методы, то да, вы столкнетесь с проблемами.
В противном случае вы не столкнетесь с проблемами.
Использование плагина переноса jQuery, о котором вы упомянули, решит все проблемы, которые могут возникнуть при обновлении с 1,8 до 1,9+ (включая 2.x), а также сообщит вам о любых методах, которые вы используете, которые были удалены, когда вы смотрите на консоль. Плагин migrate - лучший способ обновления jquery с 1.6x-1.8x до 1.9 +/2.0+. Включите jquery 2.x, затем включите плагин переноса, затем откройте консоль и замените старые методы до тех пор, пока плагин переноса не перестанет выдавать ваши предупреждения. В этот момент вы сможете безопасно удалить плагин переноса.