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>

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

2 ответа

Решение

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

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


Это связано с хуком css, который используют jQuery и Transit. В версии 1.7 у jQuery не было крючка css для преобразований. Так что Транзит реализовал для нас хук. Однако jQuery обновился и теперь предлагает CSS-хуки для преобразований. Теперь они конфликтуют друг с другом. Однако это не ошибка, так как 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/

Другие вопросы по тегам