2012-02-16 29 views
0

我有一个使用Masterpages的.NET网站。我试图在主页面上的菜单中添加一些功能,允许用户将一些动态链接(在代码后面构建)进行鼠标移动,并根据用户所关注的内容显示其他动态内容区域更新。JQuery Cycle插件在ASP.NET Masterpage中不起作用

为了做到这一点,我试图让JQuery图像旋转器(Cycle插件http://jquery.malsup.com/cycle/)能够正常工作。我也尝试过使用JQueryUI做类似的事情。

我的问题是,当这个代码在主页上它永远不会工作,但如果我把它放在我的网站中的任何其他页面,那很好。我没有在头文件中使用相对链接到脚本文件。

任何人都可以帮助我弄清楚为什么我无法让JQuery在主页上运行?

我的JQuery循环头部的东西在下面。

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script> 
<script type="text/javascript" src="http://malsup.github.com/jquery.cycle.all.js"></script> 

<script type="text/javascript"> 
$(document).ready(function() { 
    $('#slideshow').cycle({ 
     fx: 'turnDown', 
     speed: 'fast', 
     timeout: 0, 
     pager: '#nav', 
     pagerAnchorBuilder: function (idx, slide) { 
      // return sel string for existing anchor 
      return '#nav li:eq(' + (idx) + ') a'; 
     } 
    }); 
}); 
</script> 

回答

0

我相信这个问题是脚本加载的顺序。

这可能是因为你正在调用某个不存在的元素上的某些元素,所以在初始化它时没有创建Cycle Plugin。

如果您有Ajax,可以考虑使用脚本管理器,但这不是必需的。

装载的顺序变为:

1)jQuery是装载在母版页。 2)内容页面被合并并触发内容标题脚本。 3)的document.ready从主 4)的document.ready从内容页

如果你把一些所谓的警报叫,你可以描绘出是否你的$(“#幻灯片”)。周期( )通话正在正确的时间进行。您需要确保存在#slideshow。

看到这个职位的脚本管理解决方案: Proper way to use JQuery when using MasterPages in ASP.NET?

基本上是:

1) Add Scriptmanager to your Master Page 

2) Add a reference to the Jquery library before your Content Page document.ready() 

3) Use your document.ready code above as it is, but do not include the references to the library or plugin files. Those belong on the master. 

我知道这是一个老帖子。但我认为这是一个普遍的问题。