【问题标题】:Uncaught TypeError: Object #<Object> has no method 'movingBoxes'未捕获的类型错误:对象 #<Object> 没有方法“movingBoxes”
【发布时间】:2011-07-18 08:50:13
【问题描述】:

我试图在我的 asp.net mvc 站点上使用movingBoxes 插件,但它不工作(显然)。 我在 site.master 的 head 标记中导入了movingboxes.js,就像这样

    <script src="<%: Url.Content("~/Scripts/jquery.movingboxes.js")%>" type="text/javascript"></script>

并且浏览器成功获取此脚本。现在我有一个继承自 site.master 的常规视图,其中有一点点 jquery,它调用了movingBoxes 插件

<script type="text/javascript">
    $(document).ready(function () {
        $($('#slider-one'));
        $('#slider-one').movingBoxes({
            startPanel: 1,      
            panelWidth: .5,     
            fixedHeight: false
        });

        $('#slider-two').movingBoxes({
            startPanel: 1,     
            panelWidth: .5,     
            fixedHeight: false
        });
    });
</script>

当我查看页面时。除了这个插件,一切都很好(包括其他 jquery 的东西),我得到了这个错误

这是错误的描述

任何帮助将不胜感激

编辑

显然我有这个:

    <script type="text/javascript" src="../../Scripts/jquery-1.4.1.js" />
    <script src="<%: Url.Content("~/Scripts/jquery.movingboxes.js")%>" type="text/javascript"></script>

现在可以通过将其更改为:

    <script type="text/javascript" src="../../Scripts/jquery-1.4.1.js"></script>
    <script src="<%: Url.Content("~/Scripts/jquery.movingboxes.js")%>" type="text/javascript"></script>

【问题讨论】:

  • 我没有发现任何问题(除了我不知道什么是 `$($('#slider-one'));` 挂在顶部)。也许检查文件是否正确包含。
  • 您能否确认 jQuery javascript 文件是在“movingboxes”之前加载的?如果它们的顺序错误,您将得到类似于您所看到的错误的内容。
  • 他之前设置了一个警报,里面有 $('#slider-one'),这就是顶部悬挂选择器的来源。
  • @Neil 您的建议帮助我处理了一些稍后无法运行的脚本。谢谢

标签: javascript jquery typeerror


【解决方案1】:

您可以尝试一些方法来使其正常工作。

  1. 绝对确保您的脚本被拉入页面,一种检查方法是使用 Chrome 调试器中的“源”选项卡并搜索文件。

  2. 确保在包含 jQuery 之后再包含脚本,因为它肯定依赖于它。

除此之外,我检查了 API,就我所见,您肯定做的一切都是正确的。祝朋友好运!

编辑:确保关闭脚本标签。下面有一个答案表明这是解决方案。

【讨论】:

  • 谢谢很多人......我一直在寻找这个很长时间......最后的结果是javascript文件的排序......再次
  • 这不起作用,因为缺少结束标签。请从 SaschaM78 修改下面的正确答案
  • 我还要说:确保你不会不小心多次包含 jQuery,否则第二次导入可能会清除已经导入的插件。
【解决方案2】:

请记住,只有少数元素可以自动关闭,大​​多数其他元素必须通过添加显式结束标记来关闭。在上述情况下,第一个脚本标签没有正确关闭,第二个脚本的结束脚本标签随后关闭了脚本部分,导致仅将第一个脚本作为外部脚本源加载而忽略了第二个脚本。

更多关于哪些标签可以自我关闭的信息,请查看 HTML5 的 W3C 草案(尽管早期 HTML 版本中的定义没有什么不同):

http://www.w3.org/TR/html5/syntax.html#end-tags(8.1.2.1,第 6 点)

【讨论】:

    【解决方案3】:

    我刚刚在 jquery 响应式幻灯片插件 (http://responsive-slides.viljamis.com/) 上遇到了同样的问题。

    我通过不使用 jQuery 短版 $(".rslides").responsiveSlides(.. 而是使用长版来修复它:jQuery(".rslides").responsiveSlides(...

    所以将$切换为jQuery以免造成冲突或使用正确的jQuery无冲突模式(http://api.jquery.com/jQuery.noConflict/

    【讨论】:

    • 谢谢,响应式幻灯片我也遇到了同样的问题。
    【解决方案4】:

    我遇到了同样的问题。 我在 head 部分更改了脚本的顺序,它对我有用。 插件需要的每个脚本 - 都需要保持关闭。

    例如:

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
    <script type="text/javascript" src="http://cloud.github.com/downloads/malsup/cycle/jquery.cycle.all.latest.js"></script>
    <script type="text/javascript"> 
    $(document).ready(function() {
        $('#slider').cycle({
                fx: 'fade' 
            });
        });
    </script>
    

    【讨论】:

      【解决方案5】:

      当我遇到这个问题时,是因为我试图使用实际函数代替匿名函数。

      不正确:

      $(document).on('change', "#MyId", MyFunction());
      

      正确

      $(document).on('change', "#MyId", MyFunction);
      

      或者也正确,如果您需要传递事件对象或其他参数。

      $(document).on('change', "#MyId", function(e) { MyFunction(e); });
      

      【讨论】:

      • 我相信在 JavaScript 中你仍然可以直接进入 MyFunction 而无需将其包装为匿名函数,只需像这样删除括号: $(document).on('change', "#MyId", MyFunction );
      • 非常感谢您提及这一点!我已经更新了答案并重构了我正在从事的项目。
      【解决方案6】:

      实际上我认为您只下载了脚本的一部分。 在将整个脚本下载到 jquery 站点之前,请尝试选中“Core”复选框。

      【讨论】:

        【解决方案7】:

        我有两次链接 jquery 的同样问题。后来的版本覆盖了我的插件。

        我刚刚删除了它开始工作的后来的 jquery。

        【讨论】:

        • 我不小心也犯了这个错误
        【解决方案8】:

        我也有这样的问题,因为我使用的是 IMG 标签和 UL 标签。

        尝试将“角落”插件应用于$('#mydiv').corner()$('#myspan').corner()$('#myp').corner() 等元素,但不适用于$('#img').corner()! 此规则与将子 DIV 添加到指定元素以模拟圆角效果有关。我们知道 IMG 元素不能有任何子元素。

        我通过在 div 中包装一个需要的元素并将 IMG 更改为带有 background: CSS 属性的 DIV 解决了这个问题。

        祝你好运!

        【讨论】:

          【解决方案9】:

          确保您使用的是正确版本的 jQuery 也是一个好主意。我最近获得了一个使用 jQuery 1.6.2 的项目,该项目不适用于 hoverIntent 插件。将其升级到最新版本为我解决了这个问题。

          【讨论】:

            【解决方案10】:

            我发现我正在使用我的rendorTo div 的选择器来呈现我的列highcharts 图表。显然它为你添加了选择器,所以你只需要传递 id。

            渲染到: $('#myGraphDiv') 到字符串 'myGraphDiv' 这修复了错误希望这对其他人也有帮助。

            【讨论】:

              猜你喜欢
              • 2014-01-08
              • 2013-04-19
              • 2012-12-11
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多