Как добраться до тега с помощью jQuery?

M2
На сайте с 11.01.2011
Offline
341
588

Здравствуйте,

Имеем разметку следующего вида:


<div class="main">
<div class="menu">
</div>
</div>

этот код повторяется в цикле.

Необходимо отследить нажатие на тег с классом main и открыть ближайший тег с классом menu. Ну или закрыть, если он открыт.

Мой вопрос: как в этой структуре получить

<div class="main"></div>
------------------- Крутые VPS и дедики. Качество по разумной цене ( http://cp.inferno.name/view.php?product=1212&gid=1 ) VPS25OFF - скидка 25% на первый платеж по ссылке выше
D
На сайте с 14.01.2007
Offline
153
#1

$(this).first-child?

C
На сайте с 04.02.2005
Offline
291
#2

.find('.main')

Не совсем понятно, что нужно ..

Нужен родитель от menu - parent() = main

Или

Наследник от main - find()

M2
На сайте с 11.01.2011
Offline
341
#3

Обрисую подробнее.

Вот исходный код:


<div class="tea_title"><a href="catalog.php?cat_id=1" class="title_text">Чай</a><div class="menu_line"></div>
<div class="menu">
<div class="menu_item"></div>
{section name="tea" loop=$TEA_DATA}
<div class="menu_item">
<a href="catalog.php?cat_id={$TEA_DATA[tea].cat_id}">{$TEA_DATA[tea].cat_name}</a>
</div>
{/section}
</div>
</div>

Данный код повторяется в цикле, но элемент

<a href="catalog.php?cat_id=1" class="title_text">Чай</a>
есть всегда.

Далее JS;


$(".title_text").click(function(){

//var objMenu = $(this).closest('.menu');
var objMenu = $(this).parent().find('.menu');
alert(objMenu.css('display'));
if ( objMenu.css('display') == 'none' ) {
$('.menu').css('display','none');
objMenu.css('display','block');

} else {
objMenu.css('display','none');
}
return false;
});

В принципе alert(objMenu.css('display')) даёт то что надо. Но элементы меню почему-то не открываются / закрываются...

C
На сайте с 04.02.2005
Offline
291
#4

Вот это вот:

var objMenu = $(this).parent().find('.menu');

Попробуйте заменить

var objMenu = $(this).siblings('.menu');

Но элементы меню почему-то не открываются / закрываются...

А пройтись отладчиком, или используйте console.log

D
На сайте с 14.01.2007
Offline
153
#5

вы уверены, что в objMenu не array?

A
На сайте с 21.01.2009
Offline
31
#6
<div class="main">
<div class="menu">
</div>
</div>


$('.main').bind('click', function(){
$('> .menu', $(this)).toggle();
});
M2
На сайте с 11.01.2011
Offline
341
#7
andygood:


$('.main').bind('click', function(){
$('> .menu', $(this)).toggle();
});

Не прокатывает :(

Chukcha:

Вот это вот:
var objMenu = $(this).parent().find('.menu');

Попробуйте заменить
var objMenu = $(this).siblings('.menu');

Заменил, безуспешно.

Dinozavr:

вы уверены, что в objMenu не array?

Конечно, уверен. Ведь вот это:


var objMenu = $(this).siblings('.menu');
alert(objMenu.css('display'));

выдаёт правильное значение display.

---------- Добавлено 13.02.2013 в 14:54 ----------

Всё отлично, можно закрывать темку :)

D
На сайте с 14.01.2007
Offline
153
#8
mark2011:
Всё отлично, можно закрывать темку

и в чём была проблема?

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий