Открытие аккордиона при переходе на странице
Здравствуйте!Всех с прошедшими праздниками.
Есть аккордеон на странице. Это стандартный плагин jquery. <div class="container" > <h2 class="acc_trigger" id="a<?=$item['seminar_id'];?>"><a href=<?=$item['seminar_id'];?>">Текст1</a></h2> <div class="acc_container"> '..... </div> </div> Код js $(document).ready(function(){ //обрабатывает клик по меню $('#menu21 a').click(function(){ var b = $(this).attr('title'); $('.acc_container').removeClass('show'); $('#a'+b).next().addClass('show'); }); $('.acc_container').not('.show').hide(); //On Click клик по самому аккордеону $('.acc_trigger').click(function(){ if( $(this).next().is(':hidden') ) { $('.acc_trigger').removeClass('active').next().slideUp(); $(this).toggleClass('active').next().slideDown(); $('.result').hide(); $('.pokazRasp.a_seminar').text('Показать расписание'); $('.pokazOtzv.a_seminar').text('Показать отзывы'); } else { $('.acc_container').slideUp(); $('.result').hide(); $('.pokazRasp.a_seminar').text('Показать расписание'); $('.pokazOtzv.a_seminar').text('Показать отзывы'); } return false; }); Аккордеон работает все хорошо. Но есть задача: Чтобы при щелчке из меню (если находимся на главной странице) совершался переход на страницу с аккордеон и открывался соответствующий блок. <li class="topmenu_tre tre_1"><a class="menu_a" id="menu_a_1" href="<?=base_url();?>seminars">Семинары</a> <ul id="menu21"> <li><a href="<?=base_url();?>seminars#a1" title="1">Текст1</a></li> <li><a href="<?=base_url();?>seminars#a2" title="2">Текст1</a></li> <li><a href="<?=base_url();?>seminars#a3" title="3">Текст1</a></li> <li><a href="<?=base_url();?>seminars#a4" title="4">Текст1</a></li> <li><a href="<?=base_url();?>seminars#a5" title="5">Текст1</a></li> <li><a href="<?=base_url();?>seminars#a6" title="6">Текст1</a></li> <li><a href="<?=base_url();?>seminars#a7" title="7">Текст1</a></li> <li><a href="<?=base_url();?>seminars#a8" title="8">Текст1</a></li> </ul> </li> Щас при переходе блок не открывается. Но при повторном щелчке все работает отлично. Блоки открываются и сворачиваются. Скорее всего при первом щелчке не работает, потому что .hide() придается значение display:none. Но я вроде фильтром $('.acc_container').not('.show').hide(); отбираю. При щелчке из меню, блоку должен присваиваться класс. Так вот при первом переходе не работает.( |
Цитата:
|
Цитата:
$(document).ready(function(){ $('#menu21 a').click(function(){ var b = $(this).attr('title'); window.name = 'a'+b; var c = '#a1'; $('.acc_container').not('#a1').hide(); alert(window.name); }); }); У меня на главной alert выскакивает. Дальше грузится другая страничка. Там $('.acc_container').not('#a1').hide();//не срабатывает при переходе А находясь со страничкой где есть аккордеон все работает прекрасно. |
vladimirlip,
При клике в window.name заноси адрес перехода и Id открытой вкладки, Скриптом анализируешь, тот ли адрес - ежели не тот - пропускаешь, если адрес верен - открывает вкладку с id - |
ЧТо-то я наверно недопонимаю. Но опять при нахождении на oldSrc (на главной) то выскакивает false.
При нахождении на странице true. $('#menu21 a').click(function(){ var newSrc = $('#menu_a_1').attr('href'); var oldSrc = window.location.href; if (oldSrc == newSrc) { var b = $(this).attr('title'); var c = '#a'+b; $(c).show(); $('.acc_trigger').next().not(c).hide(); } else { alert('error'); } Я вот что думаю, а если привязать выполнение сценария не на событие клик по меню, а к тому которое выполняется при загрузке новой странице. Дальше занести в переменную идентификатор клика var c= $('#menu21 a').click(); window.name = c; И вот при открытие страницы с нужным href и при не пустом значении window.name уже открывать блок нужный. Если идея правильная, Так вот к какому событию привязаться? |
Цитата:
Идея с $('#menu21 a').click(); неверна , посколь клик задаст бесконечный повтор операции, проще ID и адрес window.name = 'http://javascript.ru/,ID_box3'; Потом var a = (window.name).split(","); var addr =a[0],id=a[1]; if(documrnt.URL==addr){ $(id).show(); } |
Все получилось спасибо. window.name - сила!
$('#menu21 a').click(function(){ var addr = $(this).attr('href'); var id = $(this).attr('id'); window.name = addr + ',#' + id; var a = (window.name).split(","); var addr =a[0],id=a[1]; if(document.URL==addr){ $('.acc_container').not(id).hide(); |
Хотел тебе карму увеличить..да говорят, что надо сначала еще кому-то увеличить! Блин, а кому, если ты отвечаешь оперативно и правильно, пока только один!
|
Часовой пояс GMT +3, время: 23:55. |