JQuery Transit: объект none не имеет метода 'setFromString'

Я загрузил в jQuery-транзит, и я убедился, что сделал это после загрузки jQuery, но я все еще получаю эту ошибку:

Я просмотрел панель ресурсов в Chrome, и после jQuery загружается транзит jQuery. Он также загружен правильно и отображается без проблем.

Я также тестировал в консоли, тестируя примеры на веб-сайте. Все они возвращают ту же ошибку.

вот мой код:

  $("#current-employers a.industry-company-link").click(function (e)
    {
        e.preventDefault();
        var url = $(this).attr("href");
        var company_container = $("#current-company-profile");
        company_container.load(url);
        company_container.transition({
            y: ($(this).offset().top - company_container.offset().top)
        });
        console.log("container offset: " + company_container.offset().top + "\nURL offset: " + $(this).offset().top);
    });

И сценарии, которые я приношу:

<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/1.8.0/jquery-1.8.0.min.js"></script>

        <script src="http://cdnjs.cloudflare.com/ajax/libs/jquery.transit/0.1.3/jquery.transit.min.js"></script>

Спасибо за любую помощь.

Ответы

Ответ 1

Ну, в этом случае получается ошибка jQuery. jQuery 1.8 был виновником здесь. Загрузка в 1.7.2 исправила проблему. Я расскажу об этой ошибке для команды перехода и jQuery.

Ответ 2

UPDATE (13 апреля 2013 г.): я читал исходный код Transit, и, похоже, г-н Круз обновил код для эффективной работы с jQuery 1.8+. Если кто-то протестировал его, могли бы они подтвердить, что он работает. Спасибо.


Это связано с крюком css, который использует jQuery и Transit. В версии 1.7 jQuery не использовал css-hook для преобразований. Итак, Transit применил для нас крючок. Однако jQuery обновил себя и теперь предлагает css hooks для преобразований. Теперь они конфликтуют друг с другом. Однако это не ошибка, так как jQuery работает нормально и как таковой, его не нужно сообщать в jQuery.

Ваш выбор - использовать версию jQuery версии 1.7 и дождаться обновления Transit или изменить код Transit, который занимает всего около минуты.

Чтобы изменить, получите версию Transit с официального сайта. Затем перейдите к строке 603, где указано $.cssHooks [prop]. Удалите этот метод и вместо этого разместите этот метод:

$.cssHooks[prop] = {
  get: function(elem) {
    var t = $(elem).css('transform');

    if (!t || t === "none") {
      t = new Transform();
    }
    return t.get(prop);
  },

  set: function(elem, value) {
    var t = $(elem).css('transform');

    if (!t || t === "none") {
      t = new Transform();
    }

    t.setFromString(prop, value);

    $(elem).css({ transform: t });
  }
};

Вы можете минимизировать код на одном из доступных сотен компрессоров, например http://jscompress.com/