2012-04-03 4 views
0

Может кто-то помочь мне с этим. У меня есть страница, в которой есть меню, в котором я выполняю некоторые вещи js на ссылках, содержащих класс «открыватель».Внешняя ссылка не открывается

Каждая ссылка отлично работает, за исключением ссылок «не для связи» (ака ... внешних ссылок), они, похоже, ничего не делают.

Можете ли вы сказать мне, что я делаю неправильно здесь: http://new.o7thwebdesign.com

если вы нажмете на «Test 1», страница переходит на внутреннюю страницу, как это должно быть. (обратите внимание: «Внешняя» существует только на главной странице, поэтому вам нужно нажать «Главная»)

Если вы нажмете «Внешнее», это ничего не значит.

ответ

2

В сценарии h.basic.js у вас есть следующий код:

$('#menu li').click(
    function() { 
     $(this).siblings().find('ul').slideUp('normal'); 
     $(this).siblings().find(".menu_arrow").attr('src', '/Images/sidebar_icons/right_arrow.png'); // Slide up all menus except the one clicked 
     $(this).has('ul').find('ul').stop(true,true).slideToggle('normal'); // Slide down the clicked sub menu 
     $(this).attr('class', 'current'); 
     var down = $(this).find(".menu_arrow").attr('src') == "/Images/sidebar_icons/right_arrow.png" 
     $(this).find(".menu_arrow").attr('src', 
      $(".menu_arrow").attr('src').replace(down ? 'right_' : 'down_', down ? 'down_' : 'right_')); 
     return false; 
    } 
); 

return false; предотвращает действие по умолчанию события, который был щелчок по ссылке. Попробуйте следующие вместо:

$('#menu li').click(
    function (e) { 
     $(this).siblings().find('ul').slideUp('normal'); 
     $(this).siblings().find(".menu_arrow").attr('src', '/Images/sidebar_icons/right_arrow.png'); // Slide up all menus except the one clicked 
     $(this).has('ul').find('ul').stop(true,true).slideToggle('normal'); // Slide down the clicked sub menu 
     $(this).attr('class', 'current'); 
     var down = $(this).find(".menu_arrow").attr('src') == "/Images/sidebar_icons/right_arrow.png" 
     $(this).find(".menu_arrow").attr('src', 
      $(".menu_arrow").attr('src').replace(down ? 'right_' : 'down_', down ? 'down_' : 'right_')); 

     return e.target.target == '_blank'; 
    } 
); 

Измененный линии являются:

return e.target.target == '_blank'; 

Это немного сбивает с толку, но он смотрит на целевой элемент события (Якорь быть нажата), а затем смотрит на это target, которое устанавливается с использованием целевого атрибута вашего тега <a>. Если это _blank, тогда он возвращает true, иначе он возвращает false. Таким образом, ссылки с target="_blank" сохранят поведение по умолчанию, а ссылки без этого будут его подавлять.

+0

пока я не согласен с вами. оригинальная анимация закрытия страницы больше не срабатывает с этим – Kevin

+0

Я получил ее для работы, заменив return false; с [код], если ($ (это) .find ('а') атр ('мишени').) { \t \t \t \t \t \t возвращающие; \t \t \t \t \t} еще { \t \t \t \t \t \t возвращение ложным; \t \t \t } [/ code] Есть ли способ сократить это немного? – Kevin

+0

yep, работа e.target.target работает. Большое спасибо – Kevin

Смежные вопросы