Я показываю и скрываю divs, когда нажимает другой div. Мне нужно определить, отображается ли какой-либо конкретный div или отображается или скрыто.
В конечном итоге то, что я пытаюсь сделать, - это то, что при нажатии на какой-то div все остальные "show/hide" div должны быть скрыты, а затем определять, отображается ли div div, связанный с clicked-div, если это скрыть его, иначе покажите это.
Мне также нужно добавить/удалить класс css (для цвета фона) для показанного/скрытого div на основе его состояния переключения.
Здесь код jQuery, который я использую для переключения состояния show/hide divs:
$('#movieListTable').on('click', 'div.vitalsTable', function (e) {
// Don't do anything if the Edit button or Delete checkbox is clicked
if (event.target.className !== 'btnEditMovie' && event.target.className !== 'chkDeleteMovie') {
$(this).parent().parent().find('div.detailsTable').toggle('blind','easeInOutQuart', 300);
}
});
Странно - и разочаровывает - все, что я прочитал, включая ответы здесь в SO, указывает, что я должен просто проверить состояние отображения ( "нет" ) или видимое свойство, но проверить консоль ни одна из них не устанавливается на div, который отображается/скрыт.
Я создал jsFiddle, чтобы вы могли общаться.
Документация jQuery для toggle() обсуждает примерно 3/4 пути вниз по странице, логический параметр "showOrHide" для одного о способах использования toggle(), но я не смог выяснить, как использовать это сам...
вы можете использовать $(div).is(':visible')
div
на селектор для dom, который вы проверяете?
$('.elem').slideToggle('fast', function() {
alert($(this).is(':visible'));
});
if ( $(el).css('display') === 'none) )
it toggled off
else
it toggled on
var className = $(el).attr("class");
Можно извлечь текущий класс оттуда по логике, может взять на себя испытание и изменить элемент:
if(className == "yourCss")
el.addClass("YourCSS");
el.removeClass("YourCSS");
Я все еще верю, что jvnill answer эффективен, если не нужно проверять несколько случаев класса.
toggle()
: просто переключитесь между hide() и show() для выбранных элементов, изменив свойство отображения CSS.
Примечание.. Когда класс добавляется к элементу, атрибут класса (список) элемента добавляется вместе с ним, если он не удаляется вызовом .removeClass()
.