2015-10-06 2 views
1

У меня есть несколько кнопок, каждый из которых имеет класс «полноэкранный режим», который я намерен использовать для отображения/скрытия содержимого на странице. Все кнопки имеют идентификаторы, которые являются названиями школьных программ, и для каждой кнопки на странице есть divs с классами, которые соответствуют идентификатору (кнопка с идентификатором «программирование» и соответствующий div с классом «программирование», и т.д).Прокрутка объектов с тем же классом с помощью jQuery?

Моя цель теперь состоит в том, чтобы иметь это, когда нажата кнопка, div с классом, который соответствует идентификатору щелкнутой кнопки, скрыт, предоставив этому div класс, который предназначен для отображения: none.

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

$('.fullscreen-button').each(function(i,elm) { 
    programTitle = $(elm).attr("id"); 
     $(elm).click(function(){ 
      $('.program-collector div').each(function(j,pelm) { 
       if ($(pelm).hasClass(programTitle)) { 
        $(pelm).addClass("hidden"); 
       } 
      }); 
     }) 
    }); 

Итак, как же я на самом деле цикл через все кнопки и дивы должным образом?

+1

Если бы вы могли сделать [jsfiddle] (https://jsfiddle.net) это делает его намного легче ответить на ваши вопросы. – arcyqwerty

+0

Трудно понять, что не так с JS, но не с HTML, над которым он работает. Добавьте свой HTML к вопросу (или еще лучше, создайте скрипку в соответствии с предложением @ arcyqwerty) – ochi

ответ

2

Это должно быть простое решение проблемы с .

Если элемент с классом fullscreen-button нажат, то какие-либо элементы, соответствующие .program-collector div.{button-id} будут скрыты (где button-id является id атрибута щелкнуло .fullscreen-button элемента).

Обратите внимание, что $(selector).hide() автоматически применяет display: none

$('.fullscreen-button').click(function(){ 
    $('.program-collector div.' + $(this).attr('id')).hide(); 
}); 

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

http://api.jquery.com/hide/

+0

Большое спасибо за понимание. Я просто пошел и сделал [JSFiddle] (https://jsfiddle.net/79yay958/2/) с любым кодом, который был применим. Ваше решение работает, когда я заменяю свой jQuery на JSFiddle своим, за исключением кнопки Game Design. Будет ли интервал в этом случае проблемой? Я также получаю непризнанную ошибку выражения в консоли (нераспознанное выражение: .program-collector div.Acting For Television), и функциональность не работает с новым кодом. Его длинный выстрел, но мне интересно, достаточно ли достаточно найти исправление, основанное на этом предупреждении? –

+0

Это потому, что «Game Design» на самом деле интерпретируется как два класса «Игра» и «Дизайн». Я бы рекомендовал использовать тире или другой разделитель. Так что да, это проблема с пробелами. – arcyqwerty

+0

Невозможно воспроизвести ошибку консоли. Вы используете какой-то другой код? Я не вижу ничего упоминания о «телевидении» в скрипке. – arcyqwerty

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