jQuery Transit:对象没有方法'setFromString'

use*_*980 14 javascript jquery css-transitions jquery-transit

我已经加载了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);
    });
Run Code Online (Sandbox Code Playgroud)

我带来的脚本:

<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>
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

use*_*980 9

好吧,在这种情况下,结果是jQuery的错.jQuery 1.8是这里的罪魁祸首.在1.7.2中加载修复了问题.我将向运输和jQuery团队报告此错误.


Jon*_*nge 9

更新(2013年4月13日):我正在阅读Transit的源代码,看来Cruz先生已经更新了代码以便有效地使用jQuery 1.8+.如果有人测试了它,他们可以确认它是否有效.谢谢.


这与jQuery和Transit使用的css钩子有关.在1.7版本中,jQuery没有用于转换的css挂钩.所以Transit为我们实现了一个钩子.但是,jQuery更新了自己,现在为转换提供了css钩子.这些现在彼此冲突.然而,它不是一个错误,因为jQuery工作正常,因此,它不需要报告给jQuery.

您的选择是使用1.7版本的jQuery并等待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 });
  }
};
Run Code Online (Sandbox Code Playgroud)

您可以在数百种可用压缩器中的一种缩小代码,例如http://jscompress.com/