PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Без описания
Поиск в теме | Версия для печати
3d_killer
Отправлено: 02 Сентября, 2011 - 16:02:21
Участник
Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011
Откуда: Ростов-на-Дону
Помог: 21 раз(а)
CODE (
htmlphp ):
скопировать код в буфер обмена
$( this) . find( 'span' ) . click( function( )
{
if ( $( this) . hasClass( 'show' ) )
{
$( this) . removeClass( 'show' ) . addClass( 'hide' ) ;
}
else
{
$( this) . removeClass( 'hide' ) . addClass( 'show' ) ;
$
( this
) . next ( ) . next ( 'ul' ) . slideDown
( 400
) ; }
}
есть такой обработчик при нажатии скрывает часть меню и открывает, но есть вложенные элементы в списке которые то же имеют свойство открываться закрываться, мне нужно чтобы при сворачивании элемента верхнего уровня сворачивались и вложенные элементы как ни пробовал не работает
сам список для примера:
CODE (
html ):
скопировать код в буфер обмена
<ul class = "tree" >
<li ><div class = "first" ></ div ><a href = "" > 1</ a ></ li >
<li ><span class = 'show' ></ span ><a href = "" > 2</ a >
<ul >
<li ><a href = "" > 2.1</ a ></ li >
<li class = "last" ><span class = 'show' ></ span ><a href = "" > 2.2</ a >
<ul >
<li ><a href = "" > 2.2.1</ a ></ li >
<li ><a href = "" > 2.2.2</ a ></ li >
<li ><a href = "" > 2.2.3</ a ></ li >
<li ><a href = "" > 2.2.4</ a ></ li >
</ ul >
</ li >
</ ul >
</ li >
<li class = "last" ><a href = "" > 3</ a ></ li >
</ ul >
вот мне нужно чтобы при нажатии на 2 свернулся и 2.2 то же.
DeepVarvar
Отправлено: 02 Сентября, 2011 - 20:05:01
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008
Откуда: Альфа Центавра
Помог: 353 раз(а)
3d_killer пишет: свойство открываться закрываться
CODE (
javascript ):
скопировать код в буфер обмена
$( function ( ) {
$( "#tree ul ul" ) .hide ( ) ;
$( "#tree ul li a" ) .click ( function ( ) {
$( this ) .parent ( ) .find ( "ul" ) .eq ( 0) .toggle ( ) ;
return false ;
} ) ;
} ) ;
Любая вложенность и без асяких ваших классов-хренасов...(Отредактировано автором: 02 Сентября, 2011 - 20:06:10)
DeepVarvar
Отправлено: 05 Сентября, 2011 - 10:48:15
Активный участник
Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008
Откуда: Альфа Центавра
Помог: 353 раз(а)
Пример увеличения текста на странице:
CODE (
javascript ):
скопировать код в буфер обмена
$( function ( ) {
var flSize = $.cookie ( "flsize" ) ;
if ( flSize != "" ) {
$( "#myPtext" ) .attr ( "style" , "font-size: " + flSize + "px" ) ;
$( "#mysize option:nth-child(" + ( flSize - 11 ) + ")" ) .attr ( "selected" , "selected" ) ;
}
} ) ;
$( function ( ) {
$( "#mysize" ) .change ( function ( ) {
var newSize = $( this + "option:selected" ) .val ( ) ;
$( "#myPtext" ) .attr ( "style" , "font-size: " + newSize + "px" ) ;
var options = { path: '/' , expires: 100 } ;
$.cookie ( "flsize" , newSize, options) ;
return false ;
} ) ;
} ) ;
Приблуда в аттаче
3d_killer
Отправлено: 05 Сентября, 2011 - 11:37:25
Участник
Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011
Откуда: Ростов-на-Дону
Помог: 21 раз(а)
CODE (
htmlphp ):
скопировать код в буфер обмена
$
( '#menu' ) . each ( function
( i
) {
if ( $. cookie( 'submenuMark-' + i) ) { // If index of submenu is marked in cookies:
$
( this
) . prev ( 'ul' ) . show
( ) . removeClass
( 'show' ) . addClass
( 'hide' ) ; // Show it (add apropriate classes) } else {
$
( this
) . prev ( 'ul' ) . hide
( ) . removeClass
( 'hide' ) . addClass
( 'show' ) ; // Hide it }
CODE (
htmlphp ):
скопировать код в буфер обмена
{ var this_i
= $
( '#menu span' ) . index
( $
( this
) . next ( ) ) ; if ( $( this) . hasClass( 'show' ) )
//если текущий элемент имеет класс show то
{
$( this) . removeClass( 'show' ) . addClass( 'hide' ) ;
//этому элементу добавляем класс hide и удаляем класс show
$
( this
) . next ( ) . next ( 'ul' ) . find
( 'span' ) . removeClass
( 'show' ) . addClass
( 'hide' ) . next ( ) . next ( 'ul' ) . slideUp
( 400
) ; cookieDel( this_i) ;
//текущий элемент выбираем следующий тег и следующий ul раскрываем
}
else
{
//если не имеет класса show то
$( this) . removeClass( 'hide' ) . addClass( 'show' ) ;
//то удаляем класс hide и добавляем класс show
$
( this
) . next ( ) . next ( 'ul' ) . slideDown
( 400
) ; //и открываем подчиненный элемент ul со скоростью 0,4 секунды
cookieSet( this_i) ;
}
CODE (
htmlphp ):
скопировать код в буфер обмена
function cookieSet( index) {
$. cookie( 'submenuMark-' + index, 'opened' , { expires: null , path: '/' } ) ; // Set mark to cookie (submenu is shown):
}
function cookieDel( index) {
$. cookie( 'submenuMark-' + index, null , { expires: null , path: '/' } ) ; // Delete mark from cookie (submenu is hidden):
}
тут пример без индекса вот сделал что то подобное но почемуто не пашет
LEONeso
Отправлено: 05 Сентября, 2011 - 19:40:25
Посетитель
Покинул форум
Сообщений всего: 499
Дата рег-ции: Янв. 2010
Откуда: Россия, Москва
Помог: 1 раз(а)
3d_killer , давайте так, вы нам:
1. html пример
2. ваш JavaScript (под пример)
3. что не работает
4. как должно работать
Потом уже можно будет всё это чудо скопировать и посмотреть, а так жевать сухой код, результата трудно добиться.
(Отредактировано автором: 05 Сентября, 2011 - 19:42:04)
-----Для некоторых лучший способ написать что-нибудь осмысленное - это сесть _опой на клавиатуру.
3d_killer
Отправлено: 06 Сентября, 2011 - 13:24:53
Участник
Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011
Откуда: Ростов-на-Дону
Помог: 21 раз(а)
полный код:
CODE (
htmlphp ):
скопировать код в буфер обмена
< script type= "text/javascript" >
$( document) . ready( function( )
{
$( '#menu' ) . each ( function( i) {
if ( $. cookie( 'submenuMark-' + i) )
{
$( this) . find( 'span' ) . removeClass( 'hide' ) . addClass( 'show' ) ;
}
else
{
$( this) . find( 'span' ) . removeClass( 'show' ) . addClass( 'hide' ) ;
}
var tree= $( this) ;
tree. addClass( 'tree' ) . children( 'li:first' ) . prepend( '<div class="first"></div>' ) ;
tree. children( 'li:last' ) . addClass( 'last' ) ;
tree. find( 'ul' ) . each ( function( ) {
$( this) . children( 'li:last' ) . addClass( 'last' ) ;
} ) ;
tree. find( 'li:has(ul)' ) . children( 'a' ) . before( '<span class="show"></span>' ) ;
tree. find( 'span' ) . removeClass( 'show' ) . addClass( 'hide' ) . next ( ) . next ( 'ul' ) . hide( ) ; tree. find( 'span' ) . click( function( )
{
var this_i = $( 'ul#menu' ) . index( $( this) . next ( ) ) ; if ( $( this) . hasClass( 'show' ) )
{
$( this) . removeClass( 'show' ) . addClass( 'hide' ) ;
$( this) . next ( ) . next ( 'ul' ) . find( 'span' ) . removeClass( 'show' ) . addClass( 'hide' ) . next ( ) . next ( 'ul' ) . slideUp( 400) ; cookieSet( this_i) ;
}
else
{
$( this) . removeClass( 'hide' ) . addClass( 'show' ) ;
$( this) . next ( ) . next ( 'ul' ) . slideDown( 400) ; cookieDel( this_i) ;
}
}
)
} ) ;
} ) ;
function cookieSet( index) {
$. cookie( 'submenuMark-' + index, 'opened' , { expires: null , path: '/' } ) ;
}
function cookieDel( index) {
$. cookie( 'submenuMark-' + index, null , { expires: null , path: '/' } ) ;
}
</ script>
большая часть кода идет это внешний вид вобщем, пытаюсь добавить кукисы вроде как проставляются но самая верхняя обработка условие не работает что открыть что закрыть, с jquery.cookies не работал и поэтому не пойму принцип (вроде как элементы ul должны пронумероваться и записываться в кукисы но как с этим точно работать так инфы и не нашел).
(Добавление)
а забыл:
CODE (
htmlphp ):
скопировать код в буфер обмена
< ul id= "menu" >
< li>< a href= "" > 1</ a></ li>
< li>< span class= 'show' ></ span>< a href= "" > 2</ a>
< ul>
< li>< a href= "" > 2.1</ a></ li>
< li class= "last" >< span class= 'show' ></ span>< a href= "" > 2.2</ a>
< ul>
< li>< a href= "" > 2.2.1</ a></ li>
< li>< a href= "" > 2.2.2</ a></ li>
< li>< a href= "" > 2.2.3</ a></ li>
< li>< a href= "" > 2.2.4</ a></ li>
</ ul>
</ li>
</ ul>
</ li>
< li>< a href= "" > 3</ a></ li>
</ ul>
(Добавление)
и css
CODE (
htmlphp ):
скопировать код в буфер обмена
< style type= "text/css" >
. tree ul{
margin:- 2px 0 0 0px; padding: 0px;
}
. tree li{
list- style: none;
margin- left: 0px;
background: url( "img/line.gif" ) no- repeat scroll 0 11px transparent;
border- left: 1px dotted #838383;
list- style: none outside none;
padding- left: 18px;
}
. tree li li{
list- style: none;
margin- left: 8px;
}
. tree a {
font- family: Verdana, Geneva, sans- serif;
font- size: 14 ;
color: #333333;
text- decoration: none;
background: url( "img/folder.png" ) no- repeat;
padding- left: 20px;
}
. tree . show{
background: url( "img/minus.png" ) no- repeat scroll left 4px transparent;
border: 0 none;
display: block;
float: left;
height: 16px;
margin- left: - 26px;
padding: 0 ;
width: 16px;
}
. tree . hide{
background: url( "img/plus.png" ) no- repeat scroll left 4px transparent;
border: 0 none;
display: block;
float: left;
height: 16px;
margin- left: - 26px;
padding: 0 ;
width: 16px;
}
. tree . last{
background: url( "img/line_last.gif" ) no- repeat scroll 0 top transparent;
border: medium none;
padding- left: 19px; }
. tree . first {
background- color: #FFFFFF;
float: left;
height: 10px;
margin- left: - 20px;
width: 2px;
}
</ style>
(Отредактировано автором: 06 Сентября, 2011 - 13:28:00)
LEONeso
Отправлено: 06 Сентября, 2011 - 17:06:58
Посетитель
Покинул форум
Сообщений всего: 499
Дата рег-ции: Янв. 2010
Откуда: Россия, Москва
Помог: 1 раз(а)
3d_killer , Cookie в jQuery - это плагин, если
его не подключить, то как будет работать скрипт? плюс пример
DeepVarvar шустрого древовидного меню с помощью jQuery достойно внимания т.к. оно работает и красиво выглядит.
зы: официальные
примеры .
(Отредактировано автором: 06 Сентября, 2011 - 17:20:14)
-----Для некоторых лучший способ написать что-нибудь осмысленное - это сесть _опой на клавиатуру.
Поиск в теме | Версия для печати
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
Powered by ExBB FM 1.0 RC1. InvisionExBB