JQuery свернуть и расширить (раскрыть) - PullRequest
0 голосов
/ 13 октября 2011

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

Пожалуйста, обратитесь к ссылке для простого, http://jsfiddle.net/sameerast/JHgvK/

Ответы [ 2 ]

2 голосов
/ 13 октября 2011

Вы можете сократить свой код до следующего:

$(".fade").click(function() {
    $(this).next().slideToggle("slow"); 
});

Это связывает обработчик событий click со всеми элементами с классом .fade вместо индивидуальной привязки id, как вы это делаете в настоящее время. Использование slideToggle касается того, является ли элемент уже видимым или нет для вас, поэтому вам не нужно беспокоиться о его сохранении в переменной.

Проблема с вашей попыткой - переменная hidden, которую вы используете для этого. При развертывании одного элемента hidden устанавливается на false. Когда вы затем нажимаете на другое, hidden имеет значение false, поэтому часть slideUp выполняется, а hidden устанавливается на true, поэтому при повторном нажатии запускается правильная ветвь (else).

Вот обновленная рабочая скрипка .

0 голосов
/ 13 октября 2011

Попробуйте это.

http://jsfiddle.net/JHgvK/2/

Я не был уверен, что вы хотите, чтобы другие блоки рухнули при нажатии одной из них.

Я не сделалt использовать slideToggle, если вы хотите сделать что-то еще для каждого состояния

...