Две вещи:
- Это
toggleClass
, а не toggleclass
- Подключите обработчик событий, используя jQuery, а не атрибуты старого стиля.
Итак:
$("div.hide").prev().click(function() {
$(this).next().toggleClass('hide');
});
Живой пример
Как это работает:
- Мы находим div, у которых есть этот «скрытый» класс, и затем мы находим всех их непосредственных предшественников через
prev
. Это создает набор всех элементов div, за которыми сразу следует div.hide
div.
- Мы подключаем событие
click
к предшественникам.
- Когда происходит
click
, мы переключаем класс на элемент next
после того, который был нажат.
Думаю, я бы порекомендовал вам использовать отдельный класс "details" или что-то рядом с "hide", на случай, если вы захотите использовать "hide" в другом месте, которое не будет иметь такой точной структуры. И если вы это сделаете, вы можете показать и скрыть, не меняя класс; jQuery достаточно умен, чтобы переопределить бит «display: none» в CSS, даже если применяется правило (не все библиотеки). Это будет выглядеть так:
CSS:
.details {
display: none;
}
Markup:
<li><div><img src="product_pic" />Product 1</div><div class="details">short intro about the product</div></li>
JavaScript:
$("div.details").prev().click(function() {
$(this).nextAll("div.details:first").toggle();
});
Живой пример
Обратите внимание, что используется toggle
вместо toggleClass
.
Примечание : отмечу, что у вас есть id="details"
в деталях div
. Помните, что id
значения должны быть уникальными, поэтому, если у вас есть более одного из них, вы не можете использовать «детали» в качестве id
каждого из них.