jquery при переключении изменяет только окружающий класс divs

#jquery

#jquery

Вопрос:

когда я нажимаю на ссылку, скрыть информацию ссылке он показывает отображения информации, но он также изменяет текст на все остальные поля на странице, а также, когда я нажимаю скрыть информацию он переключает класс тест на див класс=»revealBox» но это все из коробки, я хотел бы просто сохранить его в соответствующее поле.

Я знаю, что это будет как-то связано с $ (this) Я просто не знаю, как это реализовать.

вот мой jquery

 $(document).ready(function() {
// choose text for the show/hide link - can contain HTML (e.g. an image)
var showText='Hide Information';
var hideText='Show Information';
var is_visible = false;
$('.collapseLink').append('<span class="dottedBot">' showText '</span>');
$('.revealBoxContents').show();
$('a.collapseLink').click(function() {
// switch visibility
is_visible = !is_visible;
// change the link depending on whether the element is shown or hidden
$(this).html( (!is_visible) ? showText : hideText);
// toggle the display - uncomment the next line for a basic "accordion" style
//$('.toggle').hide();$('a.toggleLink').html(showText);
$(this).parent().next('.revealBoxContents').slideToggle('slow');
// return false so any link destination is not followed
return false;
});
// toggle the bottom link
$('.collapseLink').click(function(){
     $(this).parents('.revealBoxContents').stop(true, true).slideToggle('slow');    
     $(".collapseLink").html( (!is_visible) ? showText : hideText);
    $(this).parent('.item').toggleClass('current');

}); 

$(".revealBoxTop a").click(function(){
        $(this).toggleClass("closed").next().slideToggle("slow");
        return false; //Prevent the browser jump to the link anchor
    });

    $('.revealBox a').click(function() {
        $(".revealBox").toggleClass("test");
    });


});
  

и вот URL

http://satbulsara.com/NSJ-local/eqs1.htm

Комментарии:

1. Вы можете проверить видимость с помощью .is(':visible') .

2. Вы используете is_visible переменную и меняете ее значение. Просто используйте это вышеупомянутое свойство $(this).is(':visible') в if инструкции.

Ответ №1:

Редактировать

Хорошо, я предпринял еще одну попытку — изменил множество без тестирования! Пожалуйста, замените свой код приведенным ниже кодом и дайте совет. если это не сработает, возможно, было бы неплохо установить демо наhttp://www.jsbin.com или http://www.jsfiddle.net

 // choose text for the show/hide link - can contain HTML (e.g. an image)
var showText='Hide Information',
    hideText='Show Information';

$('.collapseLink').append('<span class="dottedBot">' showText '</span>');
$('.revealBoxContents').show();

// toggle the bottom link
$('.revealBox .collapseLink').click(function(e){
         e.preventDefault();
         var $targetContainer = $(this).parents('.revealBox').find('revealBoxContents');
         $targetContainer.stop(true, true).slideToggle('slow');
         if ($targetContainer.is(:visible) {
             $(this).html(showText);
         else {
             $(this).html(hideText);
         }
         // this line below doesn't do anything - can't find an element .item
         $(this).parent('.item').toggleClass('current');
}); 

$('.revealBox a').click(function() {
    // ONLY TARGET PARENT REVEAL BOX
    $(this).parents(".revealBox").toggleClass("test");
});
  

Надеюсь, мы становимся ближе!

ПРАВКА 3

Пошел дальше и создал макет, используя ваш пример html: http://jsbin.com/iceyi3/edit
редактировать: измененная версия: http://jsbin.com/iceyi3/2/edit

Я обнаружил ряд небрежных ошибок в своем коде из приведенного выше — поэтому я приношу извинения за это! Дублирование ‘скрыть текст’ / ‘показать текст’ связано с тем, что в некоторых областях они присутствуют в html, а также добавляются javascript.

Комментарии:

1. похоже, это не работает, поскольку это не влияет на div .revealBox, также это делает что-то странное с изменением текста, поскольку мне нужно оставить нижнюю ссылку независимой

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

3. Да, ссылка внизу изменяет поток аккордеона при нажатии на нее, если вы нажмете на нее, текст вверху будет изменен, чтобы указать информацию о показе, когда окно уже открыто

4. извините, немного запутался. Вы смотрели на приведенный выше пример jsbin (в ответе при редактировании 3). То, что я там сделал, сделано так, что щелчок по ссылке скрыть / показать в нижней части области запускает событие щелчка по ссылке скрыть / показать в верхней части области. Поэтому нет никакой разницы в том, как функционирует accordion. Кроме того, когда аккордеон закрывается, вы больше не можете видеть ссылку скрыть / показать внизу. Извините, если я вас неправильно понял!!

5. Привет, спасибо за вашу помощь, она почти готова, но если вы посмотрите на js bin и сначала нажмете на нижнюю ссылку, верхняя ссылка по-прежнему говорит «скрыть информацию», когда информация уже скрыта, а затем, когда вы нажимаете на верхнюю ссылку «Скрыть информацию», когда она расширяется, нижняя ссылка говорит «показать информацию», когда информация уже отображается. Я хотел бы знать, как сохранить логику текста при нажатии на любой из них. Спасибо