未捕获的类型错误:对象 #<Object> 没有方法“movingBoxes”
Posted
技术标签:
【中文标题】未捕获的类型错误:对象 #<Object> 没有方法“movingBoxes”【英文标题】:Uncaught TypeError: Object #<Object> has no method '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 您的建议帮助我处理了一些稍后无法运行的脚本。谢谢 【参考方案1】:您可以尝试一些方法来使其正常工作。
绝对确保您的脚本被拉入页面,一种检查方法是使用 Chrome 调试器中的“源”选项卡并搜索文件。
确保在包含 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' 这修复了错误希望这对其他人也有帮助。
【讨论】:
以上是关于未捕获的类型错误:对象 #<Object> 没有方法“movingBoxes”的主要内容,如果未能解决你的问题,请参考以下文章
vuejs 3:未捕获的类型错误:对象(...)不是函数[重复]
JqueryUI 自动完成错误:未捕获的 TypeError:对象#<Object> 的属性“结果”不是函数