Подтвердить что ты не робот

Обновление с 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.

4b9b3361

Ответ 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, затем включите плагин переноса, затем откройте консоль и замените старые методы до тех пор, пока плагин переноса не перестанет выдавать ваши предупреждения. В этот момент вы сможете безопасно удалить плагин переноса.