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/