2011-03-18 128 views
37

我试图在我的asp.net mvc网站上使用moveBoxes插件,它不工作(很明显)。 我有我的头标记进口的的Site.Master的movingboxes.js像这样Uncaught TypeError:Object#<Object> has no method'movingBoxes'

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

和浏览器成功获取该脚本。现在我有一个阶段从它的jQuery的这一点点调用的Site.Master继承常规视图的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的东西),除了这个插件,我得到这个错误

enter image description here

这里是错误 enter image description here

任何帮助,将不胜感激的描述

编辑

所以显然我有这个:

<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> 
+0

我没有看到任何错误(除了我不知道什么是'$($('#slider-one'));'挂在那里的顶部)。也许检查文件是否包含正确。 – Haochi 2011-03-18 17:53:34

+2

你能否确认jQuery javascript文件在“移动框”之前加载?如果他们错误的顺序,你会得到像你所看到的错误。 – Neil 2011-03-18 17:58:07

+0

他之前曾经用$('#slider-one')设置了一个警报,这里是顶部悬挂选择器的来源。 – Hacknightly 2011-03-18 18:03:12

回答

41

有一些事情你可以尝试得到这个工作。

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

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

除此之外,我检查了API,你肯定做的一切正确,据我所知。祝你好运!

编辑:确保关闭脚本标记。下面有一个答案指出这是解决方案。

+3

thx很多男人....我一直在寻找这么长的时间......最终结果是JavaScript文件的排序...... thx再次 – 2012-06-27 12:19:29

+1

这并没有工作,因为缺少结束标记..请在下面修改来自SaschaM78的正确答案 – 2012-11-15 10:54:15

+9

我还会说:确保您不会无意中多次包含jQuery,否则第二次导入可能会擦除已导入的插件。 – 2013-02-14 21:07:55

4

我有同样的问题。 我改变了头部部分的脚本顺序,它对我很有帮助。 插件需要的每个脚本 - 需要保持接近。

例如:

<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> 
14

请记住,只有少数几个元素可以是自闭,大多数人必须通过添加明确的结束标记关闭。在上述情况下,第一个脚本标记没有正确关闭,第二个脚本的结束脚本标记关闭了脚本部分,导致只有第一个脚本作为外部脚本源加载并忽略第二个脚本。

更多信息哪些标签可以是自我封闭,看看对于HTML5的W3C草案(虽然定义在早期的HTML版本并没有什么不同):

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

1

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

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

我已经解决了这个问题,通过在div内包装一个需要的元素并将IMG改为带有背景的DIV:CSS属性。

祝你好运!

4

我刚刚有与jQuery的响应幻灯片插件(http://responsive-slides.viljamis.com/)相同的问题。

我不使用jQuery的短版$(".rslides").responsiveSlides(..而是长版固定它:jQuery(".rslides").responsiveSlides(...

所以切换$jQuery,以免造成冲突或使用适当的jQuery的无冲突模式(http://api.jquery.com/jQuery.noConflict/

+0

谢谢,我也遇到了与响应式幻灯片相同的问题。 – 2013-06-24 15:44:28

2

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

错误:

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

正确

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

或也是正确的,如果你需要传递事件对象或其他PARAMS。

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

我相信JavaScript,你仍然可以直接进入MyFunction,而不用包装它一个匿名函数,只需删除paranthesis就行了:$(document).on('change',“#MyId”,MyFunction); – Joshua 2012-07-11 14:50:36

+0

非常感谢你提及这个!我已经更新了答案并重构了我正在进行的项目。 – 2012-07-11 23:08:30

1

其实我认为你只下载了脚本的一部分。 尝试检查“核心”复选框,然后下载jQuery站点中的整个脚本。

0

确保使用正确版本的jQuery也是一个好主意。我最近收购了一个使用jQuery 1.6.2的项目,该项目与hoverIntent插件不兼容。将它升级到最新版本可以解决这个问题。

0

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

renderTo: $('#myGraphDiv')为一个字符串'myGraphDiv',这个错误希望能够帮助别人解决错误。

1

我有同样的问题,我已经连接jQuery两次。后来的版本覆盖了我的插件。

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

+0

我也意外犯了这个错误 – 2014-08-03 23:49:15