代码之家  ›  专栏  ›  技术社区  ›  user1429980

jQuery Transit:对象none没有方法“setFromString”

  •  14
  • user1429980  · 技术社区  · 12 年前

    我已经在jQuery transit中加载了,并且我确保在加载jQuery之后完成了加载,但我仍然会收到以下错误:

    我已经查看了Chrome中的资源面板,jQuery transit是在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 回复  |  直到 10 年前
        1
  •  9
  •   user1429980    12 年前

    事实证明,在这种情况下是jQuery的错。jQuery 1.8是罪魁祸首。1.7.2中的加载解决了问题。我将向transit和jQuery团队报告这个错误。

        2
  •  9
  •   Jonathan Tonge    12 年前

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


    这与jQuery和Transit使用的css钩子有关。在1.7版本中,jQuery没有用于转换的css钩子。所以Transit为我们实现了一个钩子。然而,jQuery更新了自己,现在为转换提供了css钩子。这些现在相互冲突。然而,这并不是一个bug,因为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 });
      }
    };
    

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

    推荐文章