На форуме InfoScript.ru вы можете: задать вопросы по php, вопросы по javascript, вопросы по системе uCoz, заказать графику для вашего сайта и просто пообщаться с хорошими людьми
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: frenkmalcov  
Slidetoogle сохранение положения
7soft Дата: Среда, 21.07.2010, 13:32 | Сообщение # 1
Offline
Супер чел
Script Creator
Сообщений:420
Награды:15
Замечания:0%
Репутация
231
Многие используют slidetoogle для экономии места на сайте. Вот стандартный код:
Code
<a onclick="$('#ID').slideToggle('slow');"  href="javascript://">Текст ссылки</a>

<div id="ID" style="display: none;">Содержимое блока</div>

А можно ли сделать так, чтобы при сворачивании/разворачивании блоков их состояние запоминалось браузером, и при обновлении страницы свёрнутые блоки оставались свёрнутыми, а развёрнутые - развёрнутыми?




7soft [B] контакте
 
antisept Дата: Среда, 21.07.2010, 14:46 | Сообщение # 2
Offline
BrainStorming
Администраторы
Сообщений:2847
Награды:51
Репутация
987
Тут на куках нужно.

1) Подключи jq и cookies:

Code
<script type="text/javascript" src="http://infoscript.ru/jquery.js"></script>
<script type="text/javascript" src="http://x-3me.ru/js/jquery.cookie.js"></script>

2) Перед блоком вставь этот скрипт:

Quote
<script type="text/javascript">
$(document).ready(function(){$('div#my-menu div').each(function(i){if($.cookie('submenuMark-'+i)){$(this).show().prev().removeClass('collapsed').addClass('expanded')}else{$(this).hide( ) .prev().removeClass('expanded').addClass('collapsed')}$(this).prev().addClass('collapsible').click(function(){var this_i=$('div#my-menu div').index($(this).next());if($(this).next().css('display')=='none'){$(this).next().slideToggle(200,function(){$(this).prev().removeClass('collapsed').addClass('expand ed ');cookieSet(this_i)})}else{$(this).next().slideUp(200,function(){$(this).prev().removeClass('expanded').addClass('collapsed');cookieDel(this_i);$(this).find('ul').each(function(){$(this).hide(0,cookieDel($('div#my-menu div').index($(this)))).prev().removeClass('expanded').addClass('collapsed')})})}return false})})});function cookieSet(index){$.cookie('submenuMark-'+index,'opened',{expires:null,path:'/'})}function cookieDel(index){$.cookie('submenuMark-'+index,null,{expires:null,path:'/'})}
</script>

Там, где красным - это ID блока

Автор этого скрипта X-3me (я просто его на div'ы переделал).

3) А сам блок оформляй так:

Quote
<div id="my-menu">
<a href="javascript://">Текст ссылки</a>
<div>Содержимое блока</div>
</div>


Если я долго не выполняю обещаний, напомните мне в ЛС. Скорее всего, я просто забыл.

Не оказываю помощь через ЛС. Все вопросы - на форум или в комментарии.
 
7soft Дата: Четверг, 22.07.2010, 18:59 | Сообщение # 3
Offline
Супер чел
Script Creator
Сообщений:420
Награды:15
Замечания:0%
Репутация
231
Спасибо! smile

Добавлено (22.07.2010, 18:59)
---------------------------------------------
Не работает sad

Поставил на тестовую страницу:





7soft [B] контакте
 
antisept Дата: Пятница, 23.07.2010, 10:47 | Сообщение # 4
Offline
BrainStorming
Администраторы
Сообщений:2847
Награды:51
Репутация
987
7soft, так попробуй:

Code
<script type="text/javascript">
$(document).ready(function(){$('div#my-menu div').each(function(i){if($.cookie('submenuMark-'+i)){$(this).show().prev().removeClass('collapsed').addClass('expanded')}else{$(this).hide( )  .prev().removeClass('expanded').addClass('collapsed')}$(this).prev().addClass('collapsible').click(function(){var this_i=$('div#my-menu div').index($(this).next());if($(this).next().css('display')=='none'){$(this).next().slideDown(200,function(){$(this).prev().removeClass('collapsed').addClass('expanded   ');cookieSet(this_i)})}else{$(this).next().slideUp(200,function(){$(this).prev().removeClass('expanded').addClass('collapsed');cookieDel(this_i);$(this).find('div').each(function(){$(this).hide(0,cookieDel($('div#my-menu div').index($(this)))).prev().removeClass('expanded').addClass('collapsed')})})}return false})})});function cookieSet(index){$.cookie('submenuMark-'+index,'opened',{expires:null,path:'/'})}function cookieDel(index){$.cookie('submenuMark-'+index,null,{expires:null,path:'/'})}
</script>


Если я долго не выполняю обещаний, напомните мне в ЛС. Скорее всего, я просто забыл.

Не оказываю помощь через ЛС. Все вопросы - на форум или в комментарии.
 
antisept Дата: Пятница, 23.07.2010, 10:56 | Сообщение # 5
Offline
BrainStorming
Администраторы
Сообщений:2847
Награды:51
Репутация
987
Кажется понятно, в чем дело. Содержимое div тоже должно быть ссылкой:

Quote
<div id="my-menu">
<a href="javascript://">Текст ссылки</a>
<div><a href="javascript://">Содержимое блока</a></div>
</div>


Если я долго не выполняю обещаний, напомните мне в ЛС. Скорее всего, я просто забыл.

Не оказываю помощь через ЛС. Все вопросы - на форум или в комментарии.
 
7soft Дата: Пятница, 23.07.2010, 11:01 | Сообщение # 6
Offline
Супер чел
Script Creator
Сообщений:420
Награды:15
Замечания:0%
Репутация
231
Вот что получается:





7soft [B] контакте
 
antisept Дата: Пятница, 23.07.2010, 11:14 | Сообщение # 7
Offline
BrainStorming
Администраторы
Сообщений:2847
Награды:51
Репутация
987
Вообщем вот, нашел решение:

В head подключи jq:

Code
<script type="text/javascript" src="http://infoscript.ru/jquery.js"></script>

Затем, туда, где нужен блок, ставь это:

Quote
<a href="javascript://" onclick="cookieToggle('infoblock')">Текст</a>
<div id="infoblock">123</div>

<script type="text/javascript" src="http://x-3me.ru/js/jquery.cookie.js"></script>
<script type="text/javascript">
cookieToggle = function(id) {

if ($.cookie('hideid_'+id)!=null) {$.cookie('hideid_'+id, null);} else {$.cookie('hideid_'+id, '');}

$('#'+id).slideToggle(100);
}
cookieToggleCheck = function(id) {

if ($.cookie('hideid_'+id)!=null) {$('#'+id).hide();}
}
cookieToggleCheck('infoblock');
</script>

Красное - это ID

Прикрепления: jquery.cookie.js (1.8 Kb)


Если я долго не выполняю обещаний, напомните мне в ЛС. Скорее всего, я просто забыл.

Не оказываю помощь через ЛС. Все вопросы - на форум или в комментарии.
 
7soft Дата: Пятница, 23.07.2010, 11:30 | Сообщение # 8
Offline
Супер чел
Script Creator
Сообщений:420
Награды:15
Замечания:0%
Репутация
231
Работает! Спасибо, держи плюс! up

Добавлено (23.07.2010, 11:30)
---------------------------------------------
Последний вопрос, можно ли сделать так:

Code
<a href="javascript://" onclick="cookieToggle('infoblock')">Текст</a>
<div id="infoblock">123</div>

<script type="text/javascript" src="http://x-3me.ru/js/jquery.cookie.js"></script>
<script type="text/javascript">
cookieToggle = function(id) {

if ($.cookie('hideid_'+id)!=null) {$.cookie('hideid_'+id, null);} else {$.cookie('hideid_'+id, '');}

$('#'+id).slideToggle(100);
}
cookieToggleCheck = function(id) {

if ($.cookie('hideid_'+id)!=null) {$('#'+id).hide();}
}
cookieToggleCheck('infoblock');
cookieToggleCheck('infoblock1');
cookieToggleCheck('infoblock2');

</script>

Чтобы работало и для других блоков.




7soft [B] контакте


Сообщение отредактировал 7soft - Пятница, 23.07.2010, 11:44
 
antisept Дата: Пятница, 23.07.2010, 19:12 | Сообщение # 9
Offline
BrainStorming
Администраторы
Сообщений:2847
Награды:51
Репутация
987
7soft, можно.

Если я долго не выполняю обещаний, напомните мне в ЛС. Скорее всего, я просто забыл.

Не оказываю помощь через ЛС. Все вопросы - на форум или в комментарии.
 
komar Дата: Пятница, 18.02.2011, 17:17 | Сообщение # 10
Offline
Свой человек
Продвинутые
Сообщений:712
Награды:6
Замечания:0%
Репутация
168
Как данный скрипт адаптировать под разделы форума на ucoz?

Добавлено (07.02.2011, 11:01)
---------------------------------------------
Ну подскажите плиз... или хоть скажите в каком направлении двигаться?

Добавлено (18.02.2011, 17:17)
---------------------------------------------
Нашел я решение своей проблемы, вот скрипт сворачивания и разворачивания разделов форума с запоминанием позиции:

Code
<div id="forumbody">$BODY$</div><style type="text/css">    
.gTopCornerRight {display:none;}    
</style>   
<script type="text/javascript" src="http://soft-blog.do.am/toggleforums.js"></script>

Но есть одно НО, работает он вроде нормально, проверял в Опере, IE и лисе, НО мне не надо чтобы отображались + или - если чя захожу в сам раздел, т.к. это бестолково... Мне нужно чтобы данный скрипт работал только на главной странице форума, поможете? Думаю надо что-то менять в js файле...


 
antisept Дата: Пятница, 18.02.2011, 18:02 | Сообщение # 11
Offline
BrainStorming
Администраторы
Сообщений:2847
Награды:51
Репутация
987
Code

<div id="forumbody">$BODY$</div><?if($URI_ID$='frMain')?><style type="text/css">      
.gTopCornerRight {display:none;}      
</style>     
<script type="text/javascript" src="http://soft-blog.do.am/toggleforums.js"></script><?endif?>

Quote (komar)
Нашел я решение своей проблемы

Вот только скажи, чем он отличается от этого?


Если я долго не выполняю обещаний, напомните мне в ЛС. Скорее всего, я просто забыл.

Не оказываю помощь через ЛС. Все вопросы - на форум или в комментарии.
 
komar Дата: Пятница, 18.02.2011, 18:22 | Сообщение # 12
Offline
Свой человек
Продвинутые
Сообщений:712
Награды:6
Замечания:0%
Репутация
168
Quote (antisept)
Вот только скажи, чем он отличается от этого?

Ничем... блин, но раньше я его не видел или смотрел не внимательно...


 
antisept Дата: Суббота, 19.02.2011, 08:24 | Сообщение # 13
Offline
BrainStorming
Администраторы
Сообщений:2847
Награды:51
Репутация
987
Quote (komar)
Ничем... блин, но раньше я его не видел

А это что? В твоем посте ссылка именно на тот скрипт.


Если я долго не выполняю обещаний, напомните мне в ЛС. Скорее всего, я просто забыл.

Не оказываю помощь через ЛС. Все вопросы - на форум или в комментарии.
 
komar Дата: Суббота, 19.02.2011, 23:47 | Сообщение # 14
Offline
Свой человек
Продвинутые
Сообщений:712
Награды:6
Замечания:0%
Репутация
168
Quote (antisept)
В твоем посте ссылка именно на тот скрипт.

Значит я его не посмотрев принял за ему подобные скрипты в инете... надо же было его поставить и посмотреть, а именно его не ставил... короче я тормоз! sad


 
NexusJs Дата: Вторник, 12.06.2012, 20:42 | Сообщение # 15
Offline
Заглянувший
Стандартный аватар
Пользователи
Сообщений:1
Награды:0
Замечания:0%
Репутация
0
Code
<a href="javascript://" onclick="cookieToggle('infoblock')">Текст</a>
<div id="infoblock">123</div>

<script type="text/javascript" src="http://x-3me.ru/js/jquery.cookie.js"></script>
<script type="text/javascript">
cookieToggle = function(id) {

if ($.cookie('hideid_'+id)!=null) {$.cookie('hideid_'+id, null);} else {$.cookie('hideid_'+id, '');}

$('#'+id).slideToggle(100);
}
cookieToggleCheck = function(id) {

if ($.cookie('hideid_'+id)!=null) {$('#'+id).hide();}
}
cookieToggleCheck('infoblock');
cookieToggleCheck('infoblock1');
cookieToggleCheck('infoblock2');

</script>


Этот скрипт не работает для нескольких блоков с различными id.
Не подскажите действующий скрипт?

Добавлено (12.06.2012, 20:42)
---------------------------------------------
Проблему решил.
Разместил скрипт после всех блоков.
Спасибо)

 
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: