Вышел jQuery 1.4.1

    jQuery Ура, товарищи! Встречаем новую версию jQuery и радуемся, что разработчики этой замечательной javascript библиотеки все так же интенсивно развивают и продвигают свое детище! Не успели мы освоиться с jQuery 1.4, как подкатил новый релиз.

    В jQuery 1.4.1 исправили несколько багов, появившихся в версии 1.4 и наславу поработали над API.


    1. Скачать jQuery 1.4.1 можно здесь:




    2. А теперь предлагаю ознакомиться с нововведениями:


    • Разработчикам пришло в голову, что их изначальная идея обозвать события «blur» и «focus» (потеря и получение фокуса html элементами) новыми именами, а именно «focusin» и «focusout» возможно была и не так хороша, так что теперь в методе .live() мы можем использовать первый вариант («focusin» и «focusout» естественно никуда не делись в целях обратной совместимости).
    • Та же ситуация с событиями «mouseenter», «mouseleave». Теперь кроме них в методе .live() можно использовать еще и метод «hover»
    • Для метода .live() теперь можно задавать несколько типов событий, как и для .bind(). Пример, каким образом это может быть полезно:
      $('#some_element').live('mouseenter mouseleave', function() {
      $(this).toggleClass('entered');
      });

    • Еще раз рациональное мышление посетило создателей jQuery, когда они присмотрелись к методу .die(). Ну, или хорошие разработчики отправляют им правильные тикеты в багтреккер :) Изначально призвана для того, чтобы удалять обработчики событий, назначенные с помощью метода .live(), теперь функция .die() может удалить их все, если ее вызвать без параметров (т. е. не нужно передавать в нее тип события, для которого нужно удалить обработчиков).
    • Теперь в методы .height() и .width() можно передавать параметром функцию, которая будет соответственно устанавливать высоту / ширину.
    • Функции .parseJSON() (парсит JSON строку в javascript объект) и .error() (единый механизм вывода ошибок — это хорошо) теперь доступны всем (ранее использовались только внутри jQuery), что вполне логично, как по мне.

    Еще исправлена куча багов, но останавливаться на них детально не буду, об этом читаем здесь (на английском).

    Спасибо за внимание. Не ленимся, обновляем jQuery в своих проектах ;)
    Share post
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 34

      +6
      Скоренько они — и это хорошо :)
        +12
        Скорее всего просто шибко торопились к юбилею выпустить 1.4, а теперь баги латают.
          +3
          Иногда, лучше за неделю после релиза, залатать не фатальные баги и выпустить апдейт чем, ждать еще пол-года пока их внутренний qa найдет (как показывает практика всех багов ему всё равно не найти)…

          Поэтому и молодцы — оперативно сработали…
        0
        mouseenter… mouseleave… Мде…
          0
          .live() .die() — из той же оперы, жесть
            +1
            Что не так?
              0
              Какое тут отличие от ховера? Это же просто захламление. Или я чего-то не понимаю и ошибаюсь?
                0
                mouseenter/mouseleave поддерживаются нативно в IE, и очень хочется, чтобы они появились в других браузерах. А hover — это просто синтаксический сахар для mouseenter + mouseleave.
                  –1
                  mouseleave = mouseout
                  mouseenter != mouseover
                    0
                    mouseenter != mouseover
                    Вот это не совсем понял. В чем их разница?
                      0
                      mousenter срабатывает единожды, при ВХОДЕ курсора в область объекта
                      mouseover срабатывает каждый раз при ДВИЖЕНИИ курсора в области объекта
                      вроде так
                        0
                        Не так. Если пройти по ссылке в моём комментарии выше, то можно найти правильный ответ.
                        Mouseover and mouseout also fire when the user mouses over or out of a child element of the element you registered the events on. Mouseenter and mouseleave don’t.
                          0
                          да точно, забыл про чайлды
                      +1
                      mouseleave != mouseout
                –2
                $.getJSON заработал адекватно?
                  +3
                  а что с ним было?
                    –2
                    с друпала данные не мог взять
                      +1
                      И откуда у Вас уверенность, что проблема в $.getJSON(), а не в выдаче друпала, кривых руках или еще каких-то факторах?
                      У меня с этим методом не было сложностей.
                        +1
                        В предыдущей версии все работало
                        +1
                        getJSON теперь сначала пытается парсить полученные данные нативным браузерным парсером вместо убогого eval().

                        а нативные парсеры валидируют полученный json. подозреваю, что ваша проблема именно в этом — проверьте здесь
                        0
                        Strict JSON parsing, using native JSON.parse (jQuery.ajax() Documentation, Commit 1, Commit 2, Commit 3)

                        jQuery 1.3 and earlier used Javascript’s eval to evaluate incoming JSON. jQuery 1.4 uses the native JSON parser if available. It also validates incoming JSON for validity, so malformed JSON (for instance {foo: «bar»}) will be rejected by jQuery in jQuery.getJSON and when specifying “json” as the dataType of an Ajax request.

                        Отсюда jquery14.com/day-01

                        Может в этом проблема?
                          –1
                          Попробуйте просто сделать $.ajax, в качестве contentType указать text\plain и потом ответу с светвера в ручную сделать Eval:
                          var o = eval('(' + response + ')');
                      0
                      странно что он для лайва не сделали что — то вроде того
                      $('#some_element').live().width(20);
                      почему только события можно навешивать?
                        0
                        Я согласен, что в контексте вызова цепочки jQuery методов .live() не возвращает $(this).

                        НО.

                        Обратите внимание на свой пример: $('#some_element').live().width(20);
                        По хорошему .live() назначают некоторому css-классу а не уникальному #ID. Иначе, произойдет логический парадокс двух одинаковых уникальных #ID.

                        $('.some_element_class').live();

                        Таким образом .width(20) не будет отработан при внедрении новых элементов в DOM. Из чего следует, что .width() нужно вызывать в момент DOM-модификации:

                        $('#someone').load('new-elements.php', function(){
                        $(this).find('.some_element_class').width(20);
                        });


                          0
                          Я не против вашего примера, я согласен что так должно работать. Я только попытался объяснить свою точку зрения, как один из возможных вариантов.

                          Хотя могли и забыть просто сделать return $(this).
                            –1
                            Есть шикарный плагин docs.jquery.com/Plugins/livequery
                            С ним можно писать:
                            $('#selector.to').livequery(function()
                            {
                            $(this).click(function(){alert(this);});
                            });
                              0
                              Дело в том, что live работает следующим образом: «навешивает» eventlistener на document, соответствующий вашему событию и передает в него селектор, который вы указали в $(«selector»).live(...). А eventlistener уже вызывает вашу функцию, когда событие проходит вверх от child'ов до document.
                              +2
                              Вот live()(и die()) по-моему самая глупая глупость жквери. Можно же было навешивание событий на динамически создаваемые ноды внедрить в bind()(unbind()) и не париться с отслеживанием своего хтмла.
                                0
                                Скажите, а у одного меня проблемы с совместимостью jQuery 1.4 и jQuery UI?
                                  +2
                                  Кстати, если на сайте api.jquery.com набрать некую последовательность, то вас перебросит на ejohn.org/apps/hero/ :)
                                    0
                                    Когда уже по этой ссылке что-нибудь будет?

                                    ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js
                                    0
                                    В Хроме евент .click срабатывает два раза, при одном клике. Аналогично в сафари.

                                    Only users with full accounts can post comments. Log in, please.