ASP.NET JavaScript от MasterPage не работает - PullRequest
1 голос
/ 30 сентября 2010

Я помещаю общие (для всех моих страниц с контентом) js в заголовок раздела на моей главной странице.

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

КАК я ожидаю, на всех моих страницах контента скрипт должен прикрепить событие hover ко всем всем right_menu_links. Но это не работает.

Когда я размещаю один и тот же скрипт на своих страницах контента, все работает! Что не так?

Ответы [ 5 ]

1 голос
/ 30 сентября 2010

Я думаю, что ваша проблема здесь

<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).

1 голос
/ 30 сентября 2010

Ваш код выполняется, когда 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 голос
/ 30 сентября 2010

Должен быть заключен в функцию, которая вызывается, когда DOM загрузил .

<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 голос
/ 30 сентября 2010

Это не сработало, потому что когда исполнялся Javascript, содержимое в теле еще не было доступно. Используйте следующую структуру, чтобы ваш Javascript был выполнен, как только тело документа будет готово.

$(function() {
    // you Javascript here.
})
0 голосов
/ 30 сентября 2010

добавить language="javascript" на каждую ссылку

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

Теперь попробуйте еще раз

...