Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Изменить таб-меню [2]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): « 1 [2]   

> Без описания
dropoff
Отправлено: 01 Марта, 2012 - 23:21:23
Post Id



Посетитель


Покинул форум
Сообщений всего: 310
Дата рег-ции: Дек. 2010  


Помог: 0 раз(а)




Вкладки переключает, но вот если перейти, например, site.ru/product.php?id=50#reviews, то вкладку эту не открывает(
 
 Top
IllusionMH
Отправлено: 02 Марта, 2012 - 01:39:55
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




dropoff, долго писал длинный пост... в итоге случайно перечитал последнее сообщение и осенило
нужно чтобы ссылка была вида site.ru/product.php?id=50#reviews-tab (внимательно посмотрите на адресную строку при обычном переключении)

там же в исходнике он ко всем ссылкам добавляет -tab в конце
CODE (javascript):
скопировать код в буфер обмена
  1.  $(this).attr('href',$(this).attr('href') + '-tab');

а потом убирает последние 4 символа, когда ищет нужный контейнер
CODE (javascript):
скопировать код в буфер обмена
  1. hash = hash.substring(0,hash.length-4);

(Отредактировано автором: 02 Марта, 2012 - 01:40:44)

 
 Top
tuareg
Отправлено: 02 Марта, 2012 - 02:22:14
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




А с чего он должен ее открыть?
Чтобы он ее открыл надо сделать как-то так ...
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. $(function(){
  3.   var
  4.     hash=window.location.hash || '', //hash
  5.    //сразу запомним все переменные чтобы потом их не искать
  6.     $menu=$('#menu'),
  7.     $content=$('.content'),
  8.     $aTabs=$('a.tabs'),// все ссылки
  9.     $thisA,// это будет ссылка
  10.     $thisTab;// это будет вкладка
  11.     menu.on('myTab',function(event,id,elem){//заменить на on('myTab',...) jQuery>1.7
  12.        $thisA=$(elem);
  13.        $thisTab=$(id);
  14.        //прячем все блоки с контентом    
  15.        $content.css('display','none');
  16.        //отображаем нужный блок
  17.        $thisTab.css('display','block');
  18.        //устанавливаем класс на текущий таб и снимаем со всех элементов li класс active      
  19.        $thisA.parent().addClass('active').siblings().removeClass('active');
  20.   });
  21.   $aTabs.click(function(event){
  22.        //запрещаем переход по ссылке
  23.        event.preventDefault();
  24.        menu.trigger('myTab',[this.href.hash,this]);
  25.   });
  26.   /*если hash есть*/
  27.    if(hash!==''){
  28.     /*перебираем все ссылки*/
  29.      $aTabs.each(function(){
  30.        /*если хэши совпали вызываем обработчик myTab*/
  31.        if(this.href.hash===hash){
  32.         menu.trigger('myTab',[hash,this]);
  33.         return false;
  34.        }
  35.      });
  36.    }
  37. });
  38.  

При клике на ссылку с хэшем будет "засоряться" история т.е при клике вперед/назад будет меняться хэш. Чтобы и это отследить надо смотреть(отлавливать) еще и событие onhashchange.
Про него можете почитать
http://www[dot]xiper[dot]net/manuals/htm[dot][dot][dot]nhashchange[dot]html -->само событие
http://benalman[dot]com/projects/jqu[dot][dot][dot]shchange-plugin/ --> плагин для его эмуляции в браузерах его не поддерживающих

(Отредактировано автором: 02 Марта, 2012 - 03:01:24)

 
 Top
IllusionMH
Отправлено: 02 Марта, 2012 - 02:57:34
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




tuareg, ну скрипт та откроет вкладку.
При загрузке страницы выполняется функция tabify, в ней есть код
CODE (javascript):
скопировать код в буфер обмена
  1. if(location.hash){
  2.   handleHash();
  3. }


P.S. Недавно писал свой велосипед с вкладками Хм
Спасибо за строку
CODE (javascript):
скопировать код в буфер обмена
  1.  $thisA.parent().addClass('active').siblings().removeClass('active')

возможно пригодится при рефакторинге Улыбка
 
 Top
tuareg
Отправлено: 02 Марта, 2012 - 03:08:12
Post Id


Участник


Покинул форум
Сообщений всего: 1234
Дата рег-ции: Июнь 2010  


Помог: 69 раз(а)




Тут хозяин барин. Улыбка я на счет использовать плагин или эту ф-ю.
onhashchange все равно придется цеплять. Подключать его к плагину или просто чуток переделать здесь решать ТС.
 
 Top
dropoff
Отправлено: 03 Марта, 2012 - 08:04:25
Post Id



Посетитель


Покинул форум
Сообщений всего: 310
Дата рег-ции: Дек. 2010  


Помог: 0 раз(а)




IllusionMH, да, видел. я убирал как раз это, чтобы -tab не добавляло
Но проблема в том, что не работает если ссылка прописана. так то меню это работает нормально, но как писал ранее, если не прописать полный путь к странице в href атрибут, то меня на главную перекидывает.

tuareg, Ваш вариант не заработал совсем.
 
 Top
IllusionMH
Отправлено: 03 Марта, 2012 - 15:19:34
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




dropoff, смотрите что вы там изменили, ибо копипаст кода из первого сообщения отлично работает на ссылках вида
forum/viewtopic.php?id=1&p=2#contentGuestbook-tab
Ссылку на рабочий пример отправил в лс
 
 Top
dropoff
Отправлено: 03 Марта, 2012 - 15:36:48
Post Id



Посетитель


Покинул форум
Сообщений всего: 310
Дата рег-ции: Дек. 2010  


Помог: 0 раз(а)




Дак понятно что он работает) Я же не об этом писал.
У меня проблема в том, что нужно указывать ПРЯМУЮ ссылку в табах

Так
CODE (html):
скопировать код в буфер обмена
  1. <ul id="menu">
  2.     <li class="active"><a href="#contentHome">Home</a></li>
  3.     <li><a href="#contentGuestbook">Guestbook</a></li>
  4.     <li><a href="#contentLinks">Links</a></li>
  5. </ul>

У меня НЕ работает. При клике на любой таб, перекидывает на главную, потому как ссылка там выглядит site.ru/#contentLinks, когда должна быть site.ru/prod.php?id=5#contentLinks

Я же хотел сделать так
CODE (html):
скопировать код в буфер обмена
  1. <ul id="menu">
  2.     <li class="active"><a href="http://site.ru/prod.php?id=5#contentHome">Home</a></li>
  3.     <li><a href="http://site.ru/prod.php?id=5#contentGuestbook">Guestbook</a></li>
  4.     <li><a href="http://site.ru/prod.php?id=5#contentLinks">Links</a></li>
  5. </ul>

Чтобы УРЛ страницы уже БЫЛ в href'е таба.

Уже который раз об этом пишу, но меня не слышат видимо Радость
 
 Top
IllusionMH
Отправлено: 03 Марта, 2012 - 15:51:43
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




Ну любая ссылка не из списка там табов - спокойно работала.
Вот этот код у меня заработал как нужно. Добавил комментарии к измененным строкам
Спойлер (Отобразить)
 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB