Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.05.2011, 13:16
Новичок на форуме
Отправить личное сообщение для gzhegow Посмотреть профиль Найти все сообщения от gzhegow
 
Регистрация: 18.05.2011
Сообщений: 4

Получение ID соседнего элемента со схожей маской jquery
Не планировал особенно вникать в jquery, босс затребовал раскрывающееся меню.
Скопировал скрипт для UL LI DIV со SlideUp и SlideDown, все работало отлично - босс говорит не пойдет, можно было сделать в разы проще, а такую конструкцию слишком сложно обслуживать.

Потом он привел мне пример:

<a class="catalog" id="cat_link_1"><p>Корпусная мебель</p></a>
												<div class="box" id="cat_link_1">
													<a href="#">Пункт1</a>
													<a href="#">Пункт2</a>
													<a href="#">Пункт3</a>
													<a href="#">Пункт4</a>
												</div>
											<a class="catalog" id="cat_link_2"><p>Офисная мебель</p></a>
												<div class="box" id="cat_link_2">
													<a href="#">Пункт1</a>
													<a href="#">Пункт2</a>
													<a href="#">Пункт3</a>
													<a href="#">Пункт4</a>
												</div>


После этого были часы томительных поисков в Интернете не имея навыков написания JS кода... и вот что получилось.

$(document).ready (
	function () {
		$('#cat_div_'+divid).click (
			function() {
				if ($('#cat_link_'+divid).hasClass('active')) {
					$('#cat_link_'+divid).removeClass('active');
					$('#cat_link_'+divid).slideUp('medium');				
				} else {
					$('#cat_link_'+divid).addClass('active');
					$('#cat_link_'+divid).slideDown('medium');				
				}
			}
		);
	}
);


Однако очевидно, что где-то напортачил с разметкой или синтаксисом. А может кто-нибудь сможет подсказать вообще по-другому.

Задача: Мне необходимо сделать скрипт, который по нажатию на любую <a> с классом .catalog либо с маской по id :: "cat_div_" присваивало следующему диву с маской "cat_link_" и ТЕМ ЖЕ НОМЕРОМ - класс active.

Есть идеи?
Ответить с цитированием
  #2 (permalink)  
Старый 18.05.2011, 13:19
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 30.03.2010
Сообщений: 1,813

посмотрите toggleClass

$(function(){
$(".catalog").click(function(){
$(this).next('div').eq(0).toggleClass('active','medium');
return false;
});
});
__________________
.

Последний раз редактировалось Skipp, 18.05.2011 в 13:24.
Ответить с цитированием
  #3 (permalink)  
Старый 18.05.2011, 13:34
Новичок на форуме
Отправить личное сообщение для gzhegow Посмотреть профиль Найти все сообщения от gzhegow
 
Регистрация: 18.05.2011
Сообщений: 4

весьма интересно, но "код сложный" это я про другое говорил, он не хотел чтобы в HTML использовалось UL LI и привел пример через A DIV. Сказал - покурить мануалы на тему выборки по маске.

Мол "сделай, чтобы при нажатии на любой элемент с маской cat_div_# (вместо решетки - номер), элементы cat_link_# (тот же номер) присваивался класс актив.

Эту конструкцию сейчас попробую.

Интересны пару моментов:
1. зачем нужно eq(0)?
2. я так понимаю, что переменную switch мы просто обозвали medium, и зачем-то вернули ее значение? вот только какая польза нам от булевского значения в переменной toggle?

Спасибо за помощь!

Последний раз редактировалось gzhegow, 18.05.2011 в 13:37.
Ответить с цитированием
  #4 (permalink)  
Старый 18.05.2011, 13:48
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 30.03.2010
Сообщений: 1,813

Вот пример:
<head>
<style>
	.active{
		font-size: 20px;
	}
	.medium{
		font-size: 10px;
	}
</style>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.1.min.js">
</script>
<script type="text/javascript">
	$(function(){
		$(".catalog").click(function(){
			$("#cat_div_" + this.id.match(/^cat_link_(\d)+/)[1]).toggleClass('active','medium');
			return false;
		});
	});
</script>
</head>
<body>
<a id="cat_link_1" class="catalog">link 1</a>
<div id="cat_div_1">div 1</div>
<a id="cat_link_2" class="catalog">link 2</a>
<div id="cat_div_2">div 2</div>
<a id="cat_link_3" class="catalog">link 3</a>
<div id="cat_div_4">div 4</div>
<a id="cat_link_4" class="catalog">link 4</a>
<div id="cat_div_3">div 3</div>
</body>
__________________
.

Последний раз редактировалось Skipp, 18.05.2011 в 13:50.
Ответить с цитированием
  #5 (permalink)  
Старый 18.05.2011, 14:05
Новичок на форуме
Отправить личное сообщение для gzhegow Посмотреть профиль Найти все сообщения от gzhegow
 
Регистрация: 18.05.2011
Сообщений: 4

Невероятно! Работает!!
Думалка зашевелилась, добавил туда slideToggle и... о-жесть! когда жму на кнопку - изначально оно ЗАКРЫВАЕТСЯ(при первом нажатии), а потом уже открывает и закрывает как нужно.
Ответить с цитированием
  #6 (permalink)  
Старый 18.05.2011, 14:14
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 30.03.2010
Сообщений: 1,813

ну это уже со стилями разбираться
__________________
.

Последний раз редактировалось Skipp, 18.05.2011 в 14:17.
Ответить с цитированием
  #7 (permalink)  
Старый 18.05.2011, 14:32
Новичок на форуме
Отправить личное сообщение для gzhegow Посмотреть профиль Найти все сообщения от gzhegow
 
Регистрация: 18.05.2011
Сообщений: 4

Ну вот так оно вроде как правильно должно работать но вообще ничего не делает. Хотя раньше именно по такой методике работало все:

$(document).ready (
	function () {
		$('.catalog').click (
			function() {
				if ($("#cat_div_" + this.id.match(/^cat_link_(\d)+/)[1]).hasClass('active')) {
					$("#cat_div_" + this.id.match(/^cat_link_(\d)+/)[1]).removeClass('active');
					$("#cat_div_" + this.id.match(/^cat_link_(\d)+/)[1]).slideUp('medium');
				} else {
					$("#cat_div_" + this.id.match(/^cat_link_(\d)+/)[1]).addClass('active');
					$("#cat_div_" + this.id.match(/^cat_link_(\d)+/)[1]).slideDown('medium');
				}
			}
		);
	}
);

Последний раз редактировалось gzhegow, 18.05.2011 в 14:52. Причина: убрал точку_с_запятой в условии, начало менять класс, но slide не пашет.
Ответить с цитированием
  #8 (permalink)  
Старый 19.05.2011, 09:36
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 30.03.2010
Сообщений: 1,813

попробуй поменять стили с помошью js
__________________
.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
(DOM) JQuery получение текста ссылки Mila Общие вопросы Javascript 5 25.04.2012 13:36
Создание элемента DOM в jQuery bartonom jQuery 8 08.05.2011 18:25
JQuery .hover() уход с элемента во время его анимации warobushek jQuery 1 20.04.2011 13:41
jQuery, load: замена элемента вырубает js на странице. warobushek AJAX и COMET 0 08.10.2010 07:44
Получение стиля элемента. BreatheInTheVoid Элементы интерфейса 4 01.05.2010 17:25