2012-02-24 3 views
4

Пожалуйста, просмотрите следующий фрагмент кода -Как получить последовательные элементы с помощью jquery?

HTML

<div class="aclass"> 
    <h1>This is heading one</h1> 
    <p>This is paragraph one, this will be hidden automatically</p> 
    <p>This is paragraph two, this will be hidden automatically</p> 
    <p>This is paragraph three, this will be hidden automatically</p> 
    <h1>This is heading two</h1> 
    <p>This is paragraph four, this will be hidden automatically</p> 
    <p>This is paragraph five, this will be hidden automatically</p> 
</div> 

CSS

.aclass p {display:none;} 

JS

$(document).ready(function(){ 
    $('.aclass h1').click(function(){ 
     $(this).next('p').toggle(); 
    }); 
}); 

Этот JS код включает отображение одного р тега после тег h1 при нажатии на тег h1. Но мне нужно переключить отображение последовательных p-тэгов (от одного до трех при нажатии на заголовок 1)

Что должен быть для кода jQuery?

+0

Вы должны обернуть абзацы в DIV , и вместо этого переключите. Не то, что вы просите, невозможно, но это будет сложнее, чем необходимо. – bfavaretto

ответ

3

Я играл на скрипке для вас: http://jsfiddle.net/hMsXz/2/

здесь код для сохранения кликов:

$('.aclass h1').click(function(){ 
    $(this).nextUntil('h1','p').toggle(); 
}); 
+1

Можете ли вы добавить код к вашему ответу? Кроме того, '$ (this) .andSelf()' ничего не делает, он добавляет 'this' в коллекцию (которая уже содержит' this'). –

+0

Да, я забыл, что из «эксперимента» отредактировал уже – mindandmedia

+0

@Rocket, спасибо за редактирование, я нашел еще одну опечатку ... – mindandmedia

2

Я предполагаю, что ваш смысл расширить/свернуть все <p> теги ниже нажмите <h1>?

Используйте nextUntil('h1'), чтобы выбрать все элементы сиблинга до метки <h1>.

1

Использование .nextUntil введена в JQuery 1.4

$(document).ready(function(){ 
    $('.aclass h1').click(function(){ 
     $(this).nextUntil('h1').toggle(); 
    }); 
}); 
Смежные вопросы