2012-02-16 52 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. 

我知道這是一個老帖子。但我認爲這是一個普遍的問題。