Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.01.2013, 14:29
Интересующийся
Отправить личное сообщение для vladimirlip Посмотреть профиль Найти все сообщения от vladimirlip
 
Регистрация: 18.12.2012
Сообщений: 15

Открытие аккордиона при переходе на странице
Здравствуйте!Всех с прошедшими праздниками.
Есть аккордеон на странице. Это стандартный плагин 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(); отбираю. При щелчке из меню, блоку должен присваиваться класс.
Так вот при первом переходе не работает.(
Ответить с цитированием
  #2 (permalink)  
Старый 10.01.2013, 14:53
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от vladimirlip
совершался переход на страницу с аккордеон и открывался соответствующий блок.
Если переход на новую страницу совершается в том же окне, передайте переменную с селектором открываемого блока через window.name, и, при наличии в window.name этой переменной откройте соответствующий блок и обнулите window.name='';
Ответить с цитированием
  #3 (permalink)  
Старый 11.01.2013, 13:39
Интересующийся
Отправить личное сообщение для vladimirlip Посмотреть профиль Найти все сообщения от vladimirlip
 
Регистрация: 18.12.2012
Сообщений: 15

Сообщение от Deff Посмотреть сообщение
Если переход на новую страницу совершается в том же окне, передайте переменную с селектором открываемого блока через window.name, и, при наличии в window.name этой переменной откройте соответствующий блок и обнулите window.name='';
Спасибо за ответ! данные в window.name занес. Но все равно, код обрабатывается перед переходом на новую страницу. Не пойму как сделать, чтобы он обрабатывался на новой после её загрузки.

$(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, 11.01.2013 в 13:42.
Ответить с цитированием
  #4 (permalink)  
Старый 11.01.2013, 13:56
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

vladimirlip,
При клике в window.name заноси адрес перехода и Id открытой вкладки,
Скриптом анализируешь, тот ли адрес - ежели не тот - пропускаешь, если адрес верен - открывает вкладку с id -

Последний раз редактировалось Deff, 11.01.2013 в 13:58.
Ответить с цитированием
  #5 (permalink)  
Старый 11.01.2013, 14:48
Интересующийся
Отправить личное сообщение для vladimirlip Посмотреть профиль Найти все сообщения от vladimirlip
 
Регистрация: 18.12.2012
Сообщений: 15

ЧТо-то я наверно недопонимаю. Но опять при нахождении на 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 уже открывать блок нужный.
Если идея правильная, Так вот к какому событию привязаться?
Ответить с цитированием
  #6 (permalink)  
Старый 11.01.2013, 14:57
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от vladimirlip
var c= $('#menu21 a').click();
window.name = c;
Имхо по моему объекты в window.name не передать - ток строковые переменные, поэтому ток ID и адрес;
Идея с $('#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();
}

Последний раз редактировалось Deff, 11.01.2013 в 14:59.
Ответить с цитированием
  #7 (permalink)  
Старый 11.01.2013, 15:52
Интересующийся
Отправить личное сообщение для vladimirlip Посмотреть профиль Найти все сообщения от vladimirlip
 
Регистрация: 18.12.2012
Сообщений: 15

Все получилось спасибо. 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();
Ответить с цитированием
  #8 (permalink)  
Старый 11.01.2013, 15:53
Интересующийся
Отправить личное сообщение для vladimirlip Посмотреть профиль Найти все сообщения от vladimirlip
 
Регистрация: 18.12.2012
Сообщений: 15

Хотел тебе карму увеличить..да говорят, что надо сначала еще кому-то увеличить! Блин, а кому, если ты отвечаешь оперативно и правильно, пока только один!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Открытие полей формы при выборе определенного radio rolph Events/DOM/Window 4 15.06.2010 18:32
выполнение javascript при движении мышкой на странице root-xenos Общие вопросы Javascript 2 08.11.2009 21:55
Как сделать, чтобы музыка <embed> на странице не играла только при первом посещении? Bad Request Общие вопросы Javascript 22 27.07.2009 19:44
не работает вперед/назад при передаче параметров странице hoid Я не знаю javascript 10 03.06.2009 16:09
Отрыть DIV блок при переходе с другой страницы BuTbka Общие вопросы Javascript 7 08.04.2009 22:59