2015-07-06 3 views
0

Следующий код JS, который я запускаю, создает стиль sionemenu. Класс категории вложен в класс группы, который вложен в класс раздела. Как мне изменить этот JS, чтобы перейти в href после события слайд-шоу или слайд-вниз? Мне нужен href из html.Перейти к href после события jquery

(function ($) { 
    $(document).ready(function() { 
     var activeElement = $('#cssmenu').find('.active'); 
     activeElement.parentsUntil(".section").show(); 

     $('.section > a').click(function() { 
      $('#cssmenu li').removeClass('active'); 
      $(this).closest('li').addClass('active'); 
      var checkElement = $(this).next(); 
      if ((checkElement.is('.group-list')) && (checkElement.is(':visible'))) { 
       $(this).closest('li').removeClass('active'); 
       checkElement.slideUp('normal'); 
      } 
      if ((checkElement.is('.group-list')) && (!checkElement.is(':visible'))) { 
       $('.group-list:visible').slideUp('normal'); 
       $('.category-list:visible').slideUp('normal'); 
       checkElement.slideDown('normal'); 
      } 
      if ($(this).closest('li').find('ul').children().length == 0) { 
       return true; 
      } else { 
       return false; 
      } 
     }); 
     $('.group > a').click(function (e) { 
      $('#cssmenu li').removeClass('active'); 
      $(this).closest('li').addClass('active'); 
      var checkElement = $(this).next(); 
      if ((checkElement.is('.category-list')) && (checkElement.is(':visible'))) { 
       $(this).closest('li').removeClass('active'); 
       checkElement.slideUp('normal'); 
      } 
      if ((checkElement.is('.category-list')) && (!checkElement.is(':visible'))) { 
       $('.category-list:visible').slideUp('normal'); 
       checkElement.slideDown('normal'); 
      } 
      if ($(this).closest('li').find('ul').children().length == 0) { 
       return true; 
      } else { 
       return false; 
      } 
      window.location.href = $(this).attr('href'); 
     }); 
     $('.category > a').click(function() { 
      $('#cssmenu li').removeClass('active'); 
      $(this).closest('li').addClass('active'); 
      var checkElement = $(this).next(); 
      if ((checkElement.is('.category-list')) && (checkElement.is(':visible'))) { 
       $(this).closest('li').removeClass('active'); 
      } 
      if ($(this).closest('li').find('ul').children().length == 0) { 
       return true; 
      } else { 
       return false; 
      } 
      window.location.href = $(this).attr('href'); 
     }); 
    }); 
})(jQuery); 
+1

Переместите 'window.location' так что рядом с ползунками в если заявление? – Slime

+0

huh ..., который сработал ... довольно немой проблемой ... я не попал в window.location из-за возвратов ... * facepalm * – Szuturon

ответ

2

JQuery в slideUp и slideDown методы принимают обратный вызов:

http://api.jquery.com/slideup/

Например:

$('.group > a').click(function() { 
    var checkElement = $(this).next(); 
    var href = $(this).attr('href'); 
    checkElement.slideUp('normal', function() { 
     window.location.href = href; 
    }); 
}); 
1

JQuery-х slideUp() (И slideDown) событие принимает функцию обратного вызова, которая выполняется после завершения анимации. Затем вы можете просто использовать scrollIntoView() или все, что захотите.

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