2010-09-30 52 views
1

我將common(用於我所有的內容頁面)js放在我的主頁上。來自MasterPage的ASP.NET JavaScript不起作用

<head runat="server"> 
<script type="text/javascript" src="../Scripts/jquery-1.4.1.js"></script>  
<script type="text/javascript" src="../Scripts/jquery.corner.js?v2.11"></script> 
<script type="text/javascript" src="../Scripts/jquery.timers.js"></script> 
<script type="text/javascript" language="javascript"> 
     var mouseOver = false; 
     $('.right_menu_links').hover(
      function() { 
       var visible = $(this).parent().children(".right_menu_hint").css("display"); 
       mouseOver = true; 
       if (visible == 'none') { 
        $(this).oneTime("1s", function() { 
         if (mouseOver) 
         $(this).parent().children(".right_menu_hint").show("slow"); 
        }); 
       } 
      }, 
      function() { 
       mouseOver = false; 
       $(this).parent().children(".right_menu_hint").hide("slow"); 
      } 
     ); 
</scipt> 

如我所料,我的所有內容頁面的腳本應該懸停事件附加到所有到所有right_menu_links。但它不起作用。

當我在我的內容頁面放置相同的腳本時,所有工作都是正常的! 有什麼問題?

回答

1

它需要用DOM has loaded時調用的函數封裝。

<script type="text/javascript" language="javascript"> 
    var mouseOver = false; 
    $(function(){ 
     $('.right_menu_links').hover(
      function() { 
       var visible = $(this).parent().children(".right_menu_hint").css("display"); 
       mouseOver = true; 
       if (visible == 'none') { 
        $(this).oneTime("1s", function() { 
         if (mouseOver) 
         $(this).parent().children(".right_menu_hint").show("slow"); 
        }); 
       } 
      }, 
      function() { 
       mouseOver = false; 
       $(this).parent().children(".right_menu_hint").hide("slow"); 
      } 
    ); 
    } 
</scipt> 
1

它沒有工作,因爲當Javascript被執行時,正文中的內容尚不可用。一旦文檔正文準備就緒,請使用以下結構來執行Javascript。

$(function() { 
    // you Javascript here. 
}) 
1

您的代碼在DOM準備就緒後執行。 JQuery有一個名爲Ready的方法,可以爲你做到這一點。只需將您的代碼更改爲:

$(document).ready(function(){ 
    var mouseOver = false; 
     $('.right_menu_links').hover(
      function() { 
       var visible = $(this).parent().children(".right_menu_hint").css("display"); 
       mouseOver = true; 
       if (visible == 'none') { 
        $(this).oneTime("1s", function() { 
         if (mouseOver) 
         $(this).parent().children(".right_menu_hint").show("slow"); 
        }); 
       } 
      }, 
      function() { 
       mouseOver = false; 
       $(this).parent().children(".right_menu_hint").hide("slow"); 
      } 
     ); 
} 
1

我的猜測是,你的問題是在這裏

<script type="text/javascript" src="../Scripts/jquery-1.4.1.js"></script>  
<script type="text/javascript" src="../Scripts/jquery.corner.js?v2.11"></script> 
<script type="text/javascript" src="../Scripts/jquery.timers.js"></script> 

如果母版頁和內容頁是在不同的地點,然後JavaScript不能被發現。

例如你的母版頁是http://mysite.com/masterpages/root.master 和頁面是http://mysite.com/default.aspx將無法​​正常工作。

放置絕對路徑(http://mysite.com/Scripts/jquery-1.4.1.js)或根相對路徑(/Scripts/jquery-1.4.1.js)。

-2

在每一個環節

<script language="javascript" type="text/javascript" src="../Scripts/jquery-1.4.1.js"></script>  

<script language="javascript" type="text/javascript" src="../Scripts/jquery.corner.js?v2.11"></script> 

<script language="javascript" type="text/javascript" src="../Scripts/jquery.timers.js"></script> 

添加language="javascript"現在再試

+0

這不會改變任何東西 – 2010-09-30 14:05:34