Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.01.2016, 21:40
Аспирант
Отправить личное сообщение для katamason Посмотреть профиль Найти все сообщения от katamason
 
Регистрация: 18.06.2011
Сообщений: 75

toggle class в меню
Добрый вечер, прошу помощи c обычным переключателем по классам в такой html структуре, но не получается сменять класс (закрыть выпадение) при клике на уже развернутый пункт меню
<div class="topmenu">
<ul >
<li class="">
<a href="#" class="">Itemmenu empty</a>
</li>

<li  class="item-with-ul">
<a href="#" class="touch-with">Itemmenu</a>
<ul >
<li><a href="#">Subitem1</a></li>
<li><a href="#">Subitem1</a></li>
<li><a href="#">Subitem2</a></li>
</ul>
</li>

<li class="item-with-ul">
<a href="#" class="touch-with">Itemmenu</a>
<ul class="item-with-ul">
<li><a href="#">Subitem1</a></li>
<li><a href="#">Subitem1</a></li>
<li><a href="#">Subitem2</a></li>
</ul>
</li>

<li class="">
<a href="#" class="">Itemmenu</a>
</li>

</ul>
</div>

$('.touch-with').unbind('click').bind('click',function(e) {
              e.preventDefault();

             $('.item-with-ul').find('ul').removeClass('show_with');
              if($(this).next().hasClass('show_with')) {
                  $(this).next().removeClass('show_with');
              }
              if($(this).next().not('[show_with]')) {
                  $(this).next().toggleClass('show_with');
              } 
             
              
          })

Последний раз редактировалось katamason, 23.01.2016 в 21:59.
Ответить с цитированием
  #2 (permalink)  
Старый 23.01.2016, 22:04
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

katamason,
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  .item-with-ul ul{display:none}
  .item-with-ul ul.show_with{display:block}
  </style>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script>
$(function() {
    $(".item-with-ul ul").each(function(b, a) {
        $(a).prev().click(function() {
            $(a).toggleClass("show_with")
        })
    })
});
  </script>
</head>

<body>  <div class="topmenu">
<ul >
<li class="">
<a href="#" class="">Itemmenu empty</a>
</li>

<li  class="item-with-ul">
<a href="#" class="touch-with">Itemmenu</a>
<ul >
<li><a href="#">Subitem1</a></li>
<li><a href="#">Subitem1</a></li>
<li><a href="#">Subitem2</a></li>
</ul>
</li>

<li class="item-with-ul">
<a href="#" class="touch-with">Itemmenu</a>
<ul class="item-with-ul">
<li><a href="#">Subitem1</a></li>
<li><a href="#">Subitem1</a></li>
<li><a href="#">Subitem2</a></li>
</ul>
</li>

<li class="">
<a href="#" class="">Itemmenu</a>
</li>

</ul>
</div>



</body>

</html>
Ответить с цитированием
  #3 (permalink)  
Старый 24.01.2016, 09:25
Аспирант
Отправить личное сообщение для katamason Посмотреть профиль Найти все сообщения от katamason
 
Регистрация: 18.06.2011
Сообщений: 75

рони,
Спасибо, все работает, но голову морочу над тем, как закрыть другие при клике и при этом не потерять состояние текущей вкладки, пробовал перед и после toggle что то подобное, но сделать примитивный аккордеон не получается из них
$(a).prev().not(e).next().toggleClass('show_with')
$(".item-with-ul ul").removeClass("show_with");

Последний раз редактировалось katamason, 24.01.2016 в 09:29.
Ответить с цитированием
  #4 (permalink)  
Старый 24.01.2016, 10:33
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Открывашка 249
katamason,
и назовём это вариант открывашки 249 маловато, всё одно никто не увидит, надо сделать 300
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  .item-with-ul ul{display:none}
  .item-with-ul ul.show_with{display:block}
  </style>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script>
$(function() {
    var c = $(".item-with-ul ul")
    c.each(function(b, a) {
        $(a).prev().click(function() {
            c.not($(a).toggleClass("show_with")).removeClass("show_with")
        })
    })
});
  </script>
</head>

<body>  <div class="topmenu">
<ul >
<li class="">
<a href="#" class="">Itemmenu empty</a>
</li>

<li  class="item-with-ul">
<a href="#" class="touch-with">Itemmenu</a>
<ul >
<li><a href="#">Subitem1</a></li>
<li><a href="#">Subitem1</a></li>
<li><a href="#">Subitem2</a></li>
</ul>
</li>

<li class="item-with-ul">
<a href="#" class="touch-with">Itemmenu</a>
<ul class="item-with-ul">
<li><a href="#">Subitem1</a></li>
<li><a href="#">Subitem1</a></li>
<li><a href="#">Subitem2</a></li>
</ul>
</li>

<li class="">
<a href="#" class="">Itemmenu</a>
</li>

</ul>
</div>



</body>

</html>
Ответить с цитированием
  #5 (permalink)  
Старый 16.03.2016, 11:21
Новичок на форуме
Отправить личное сообщение для panteradiab Посмотреть профиль Найти все сообщения от panteradiab
 
Регистрация: 16.03.2016
Сообщений: 1

Таже ситуация. Пока что только разбираюсь в js.
Кто знает подскажите пожалуйста.
Есть код HTML
<div class="razdelitel">
		<a rel="gallery" href ="../images/Colection/Ambiance/big/Erismann_Ambiance_big_5906_01.jpg" class="photo"><img src="../images/Colection/Ambiance/small/Erismann_Ambiance_5906-01.jpg" alt="" width="275" height="175" /></a>
		<div class="test_inf">
		<div class="info">Краткая информация</div>
		<div class="seriya">5906-01</div>
		</div>
		<div class="info_text">
		<h2>Подробная информация о продукте</h2>
		<div class="kolonki">
			<div class="left_kol">Фабр. №:</div>
			<div class="right_kol">5906-01</div>
		</div>
		<div class="kolonki">
			<div class="left_kol">Виды продукта:</div>
			<div class="right_kol">обои</div>
		</div>
		<div class="kolonki">
			<div class="left_kol">Тип обоев:</div>
			<div class="right_kol">Структурные обои на флизелиновой основе</div>
		</div>
		<div class="kolonki">
			<div class="left_kol">Размеры рулона:</div>
			<div class="right_kol">10.05 x 0.53</div>
		</div>
		<div class="kolonki">
			<div class="left_kol">Раппорт:</div>
			<div class="right_kol">64 см прямой стык</div>
		</div>
		<div class="kolonki">
			<div class="left_kol">Цвета:</div>
			<div class="right_kol">белый, серый</div>
		</div>
		<div class="kolonki">
			<div class="left_kol">Вид рисунка:</div>
			<div class="right_kol">Образец/Мотив</div>
		</div>
		<div class="kolonki">
			<div class="left_kol">Тип рисунка:</div>
			<div class="right_kol">Расписано цветами</div>
		</div>
		<div class="kolonki">
			<div class="left_kol">Мир жилья:</div>
			<div class="right_kol">Спальня, жилая комната</div>
		</div>
		<div class="kolonki">
			<div class="left_kol">Стиль жилья:</div>
			<div class="right_kol">модерн</div>
		</div>
		<div class="kolonki">
			<div class="left_kol">Свойства обоев:</div>
			<div class="right_kol"><p>нанести клей на стену<br>при ремонте снимаются на сухо<br>трудновоспламеняемые<br>сверхмоющиеся<br>сверхсветостойкие</p></div>
		</div>
	</div>
</div>
	
	<div class="razdelitel">
		<a rel="gallery" href ="../images/Colection/Ambiance/big/Erismann_Ambiance_big_5906-03.jpg" class="photo"><img src="../images/Colection/Ambiance/small/Erismann_Ambiance_5906-03.jpg" alt="" width="275" height="175" /></a>
		<div class="test_inf">
		<div class="info">Краткая информация</div>
		<div class="seriya">5906-03</div>
		</div>
		<div class="info_text">
		<h2>Подробная информация о продукте</h2>
		<div class="kolonki">
			<div class="left_kol">Фабр. №:</div>
			<div class="right_kol">5906-03</div>
		</div>
		<div class="kolonki">
			<div class="left_kol">Виды продукта:</div>
			<div class="right_kol">обои</div>
		</div>
		<div class="kolonki">
			<div class="left_kol">Тип обоев:</div>
			<div class="right_kol">Структурные обои на флизелиновой основе</div>
		</div>
		<div class="kolonki">
			<div class="left_kol">Размеры рулона:</div>
			<div class="right_kol">10.05 x 0.53</div>
		</div>
		<div class="kolonki">
			<div class="left_kol">Раппорт:</div>
			<div class="right_kol">64 см прямой стык</div>
		</div>
		<div class="kolonki">
			<div class="left_kol">Цвета:</div>
			<div class="right_kol">жёлтый</div>
		</div>
		<div class="kolonki">
			<div class="left_kol">Вид рисунка:</div>
			<div class="right_kol">Образец/Мотив</div>
		</div>
		<div class="kolonki">
			<div class="left_kol">Тип рисунка:</div>
			<div class="right_kol">Расписано цветами</div>
		</div>
		<div class="kolonki">
			<div class="left_kol">Мир жилья:</div>
			<div class="right_kol">Спальня, жилая комната</div>
		</div>
		<div class="kolonki">
			<div class="left_kol">Стиль жилья:</div>
			<div class="right_kol">модерн</div>
		</div>
		<div class="kolonki">
			<div class="left_kol">Свойства обоев:</div>
			<div class="right_kol"><p>нанести клей на стену<br>при ремонте снимаются на сухо<br>трудновоспламеняемые<br>сверхмоющиеся<br>сверхсветостойкие</p></div>
		</div>
	</div>
</div>

Хочу сделать чтобы по клику на класс .test_inf показывался div с классом .info_text, но показывался только один. В примере приведено только 2 изображения, а их больше 300. Писал два скрипта:
1.
$(document).ready(function(){
		$('.test_inf').click(function(){
		$('.info_text').toggleClass('info_show');
		});
	});

2.
$(function() {
    var е = $(".test_inf .info_text")
    е.each(function(b, a) {
        $('.info_inf').prev().click(function() {
            е.not($('.info_inf').toggleClass("info_show")).removeClass("info_show")
        })
    })
});


В первом случае всё работает, но открываются и закрываются все дивы на всех изображениях, но это и понятно, потому что я не указал условие.
Во втором случае не работает.
Подскажите как мне сделать, чтобы нормально отрабатывало открытие дива только того, на который происходил клик, а не на все
Ответить с цитированием
  #6 (permalink)  
Старый 16.03.2016, 12:42
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

panteradiab,
$(function() {
    $(".test_inf").click(function() {
        $(this).next().toggleClass("info_show")
    })
});
Ответить с цитированием
  #7 (permalink)  
Старый 27.02.2017, 14:43
Новичок на форуме
Отправить личное сообщение для ivan_zf_zp Посмотреть профиль Найти все сообщения от ivan_zf_zp
 
Регистрация: 27.02.2017
Сообщений: 2

Ешё один уровень вложенности
Добрый день, прошу прощения, могли бы Вы доработать этот вариант ещё одним уровнем вложенности, с аналогичной функциональностью и прокомментировать код jquery? Пятый день ломаю голову, совсем не могу разобраться в синтаксисе, чтоб полностью понять и разобраться для самостоятельного написания. Вроде бы и логики совсем чуток... вообщем ваще печаль. Заранее спасибо!

Сообщение от рони Посмотреть сообщение
katamason,
и назовём это вариант открывашки 249 маловато, всё одно никто не увидит, надо сделать 300
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
  .item-with-ul ul{display:none}
  .item-with-ul ul.show_with{display:block}
  </style>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <script>
$(function() {
    var c = $(".item-with-ul ul")
    c.each(function(b, a) {
        $(a).prev().click(function() {
            c.not($(a).toggleClass("show_with")).removeClass("show_with")
        })
    })
});
  </script>
</head>

<body>  <div class="topmenu">
<ul >
<li class="">
<a href="#" class="">Itemmenu empty</a>
</li>

<li  class="item-with-ul">
<a href="#" class="touch-with">Itemmenu</a>
<ul >
<li><a href="#">Subitem1</a></li>
<li><a href="#">Subitem1</a></li>
<li><a href="#">Subitem2</a></li>
</ul>
</li>

<li class="item-with-ul">
<a href="#" class="touch-with">Itemmenu</a>
<ul class="item-with-ul">
<li><a href="#">Subitem1</a></li>
<li><a href="#">Subitem1</a></li>
<li><a href="#">Subitem2</a></li>
</ul>
</li>

<li class="">
<a href="#" class="">Itemmenu</a>
</li>

</ul>
</div>



</body>

</html>
Ответить с цитированием
  #8 (permalink)  
Старый 27.02.2017, 14:48
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Сообщение от ivan_zf_zp
вариант ещё одним уровнем вложенности
Выпадающее меню на jquery
Сообщение от ivan_zf_zp
прокомментировать код jquery
без коментариев
Ответить с цитированием
  #9 (permalink)  
Старый 27.02.2017, 18:09
Новичок на форуме
Отправить личное сообщение для ivan_zf_zp Посмотреть профиль Найти все сообщения от ivan_zf_zp
 
Регистрация: 27.02.2017
Сообщений: 2

МегаСпасибо!!!!!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Замена стилей класса Павел Турченко Элементы интерфейса 9 30.10.2015 15:24
Бесконечноуровневое меню на CSS ruslan_mart Ваши сайты и скрипты 5 12.01.2015 20:59
Выделение активных пунктов многоуровневого меню на jQuery Letto Элементы интерфейса 2 04.12.2013 15:30
Проблема с аккордионом и меню Tie ExtJS 3 01.09.2011 14:36
Toggle Class Jquery nemo Я не знаю javascript 1 26.05.2009 00:47