Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Как добраться до объекта внутри div#? (https://javascript.ru/forum/jquery/11907-kak-dobratsya-do-obekta-vnutri-div.html)

Randomizer 20.09.2010 19:48

Как добраться до объекта внутри div#?
 
Есть такая структурка из двух блоков типа div#item:

<div id="item" class="new">
<div class="button"></div>
<div class="text">REALLY TEXT IS HERE!</div>
<div class="otherinfo"></div>
</div>

<div id="item" class="new">
<div class="button"></div>
<div class="text">OTHER TEXT IS HERE!</div>
<div class="otherinfo"></div>
</div>


и к нему Jquery:

$(function() {
         $('.button').click(function() {
		$('.text').slideDown(300);
        });
});


Но по нажатию на div.button открываются div.text обоих блоков, а нужно что бы открывался только тот, на который я нажал через div.button

другими словами: мне нужно как то добраться до объекта (имеющего одинаковый класс с другими), который находится внутри родительского блока на кнопку которого я нажал.

На подобии механизма аккордеона.

Octane 20.09.2010 19:51

$('.button').click(function() {
        $(this).next(".text").slideDown(300);
});


и идентификаторы должны быть уникальными

Randomizer 20.09.2010 20:54

Спасибо! Но не работает назначение класса с таким же подходом почему-то... =(
$(this).next('.otherinfo').removeClass('otherinfo');
$(this).next('.otherinfo').addClass('minus');

exec 21.09.2010 13:33

Потому что у элемента уже удалён через .removeClass() класс otherinfo и выборка .otherinfo не находит ни одного элемента.

Randomizer 21.09.2010 18:05

$(this).next('#theotherinfo').removeClass('otherinfo');
$(this).next('#theotherinfo').addClass('minus');


но так тоже не пашет =((

Octane 21.09.2010 18:56

У элемента может быть много классов, записываются они через пробел.

Randomizer 23.09.2010 22:16

$('.button').click(function() {
        $(this).next(".text").slideDown(300);
});


проблема в том, что .next работает для элементов ВНЕ родительского контейнера, то-есть:

<div class="cont">
  <div class="text">Text here</div>
</div>

<div class="outelem"></div>


div.text не раскроется т.к. находится внутри div.cont
но если указать для раскрытия (slideDown) div.outelem, то будет работать.... вот собственно в чем моя загвоздка.
У меня кнопка на открытие текстового поля находится в родительском контейнере вместе с этим текстом =(

exec 24.09.2010 10:02

.children( "div.text" );


Оно?

Randomizer 24.09.2010 12:01

Цитата:

Сообщение от exec (Сообщение 71755)
.children( "div.text" );


Оно?

воот оно)) спасибо большое)) не знал - буду знать :write:


Часовой пояс GMT +3, время: 14:26.