2010-12-30 7 views
0

Я проверил связанные вопросы, но я не нашел правильную комбинацию вещей, чтобы сделать эту работу.jQuery переключать несколько divs внутри других divs независимо

Я пытаюсь скрыть/показать div внутри другого div. На каждую страницу размещено 20 таких разделителей.

<div class="wrapper"> 
    <div class="date"></div> 
    <div class="subject"></div> 
    <div class="who"></div> 
    <div class="body"></div> 
</div> 

Я пытаюсь показать класс = "body" div, который установлен для отображения: none; в css.

Я попытался использовать функции jQuery toggle(), toggleClass() без успеха.

Вот что у меня есть.

$('.wrapper').click(function() { 
    $('.body').toggle(); 
}); 

Я знаю, что это очень маленький кусочек кода, к сожалению, я только начал изучать JQuery и не знаю, как из этого исходить.

+0

это работает, увидеть мой ответ, я что-то еще гадать вверх. Убедитесь, что вы завершаете событие 'click' в' $ (function() {/ * code here * /}); ' – hunter

ответ

2

Вы пробовали положить его в onready функции. Как так:

$(function() { 
    $('.wrapper').click(function() { 
    $('.body').toggle(); 
    }); 
}); 

Собираем в этой функции гарантирует, что он будет работать после того, как документ был полностью загружен ... В противном случае он будет пытаться присоединить обработчик щелчка к элементу, который еще не загружен (и поэтому, не существует).

+0

Проблема с этим кодом заключается в том, что он будет переключать ВСЕ тела divs, а не только тело div в кликнутой оболочке. – Dutchie432

+0

О, я предположил, что только один будет показывать за один раз. Не знаю, почему я это принял. Вы хотите '$ (this) .find ('. Body'). Toggle();' вместо '$ ('. Body'). Toggle();'. –

+0

.... так же, как я разместил ниже :) – Dutchie432

0

Я думаю, вам нужно выбрать, что вы хотите переключить с другого класса, если хотите снова скрыть его. Переключение класса body приведет к удалению его из свинки div, когда вы снова нажмете на wrapper, и его нельзя будет выбрать.

<div class="wrapper"> 
    W 
    <div class="date">d</div> 
    <div class="subject">s</div> 
    <div class="who">w</div> 
    <div class="body isbody">b</div> 
</div> 

И JavaScript:

$('.wrapper').click(function() { 
    $(this).children('.isbody').toggleClass('body'); 
}); 

http://jsfiddle.net/vuBNd/

+0

как вы можете щелкнуть что-то, что не видно? – hunter

+0

haha ​​- понял и исправил его, думаю, – zsalzbank

+0

ну, это определенно сработает 1 раз, так как вы удаляете класс '.body' при первом щелчке – hunter

2

Проверьте мой JSFiddle (http://jsfiddle.net/XGsVE/3/). Этот код переключит BODY div щелкнутого WRAPPER. Опуская $(this) причины ВСЕ дивы ТЕЛА для переключения, несмотря на обертке они находятся.

$('.wrapper').click(function() { 
    $(this).find('div.body').toggle(); 
}); 
+0

Спасибо за объяснение. Работы, как вы сказали, я просто должен был включить его в функцию, как предложил Натан. –

+0

Затем я предлагаю использовать '$ (document) .ready (function() {...}) 'в отличие от просто функции() {...}' – Dutchie432

Смежные вопросы