Как скрыть или показать блок в зависимости от состояний чекбоксов?

Имеется несколько чекбоксов. Для наглядности прикрепил картинку. Нужно что бы по клику на любой чекбокс, над таблицей возникала кнопка. А если чекбоксы не отмечены, скрывать эту кнопку.
da7ee4c6c6614ca180af4f87edc8632d.png
  • Вопрос задан
  • 3342 просмотра
Решения вопроса 1
Лучше будет сделать некий Listener, который подпишется на изменения состояния кнопок. А после публикации изменения - будет отображать или скрывать блок Это более универсально и разделяет котлеты от мух.

Вот пример реализации через jQuery Callbacks
// реализация паттерна Обозреватель (Observer)
var topics = {};

function observer(id) {
    var topic = id && topics[id];

    if (! topic) {
        var callbacks = $.Callbacks('memory');
        topic = {
            publish     : callbacks.fire,
            subscribe   : callbacks.add,
            unsubscribe : callbacks.remove
        };
        if (id) {
            topics[id] = topic;
        }
    }

    return topic;
};
// подписываемся на некую функцию
observer('checkboxes').subscribe(handleCheckboxesState);
// биндим всем чекбоксам при изменении их состояния вызывать у подписчиков функцию обработки
$(function() {
    $(':checkbox').on('change', function() {
        observer('checkboxes').publish($(this));
    });
})
// функция обработки
function handleCheckboxesState($checkbox) {
    // все чекбоксы - $(':checkbox').
    // кликнутый чекбокс - $checkbox
}


Демо
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
dabich
@dabich
Web Developer
По умолчанию блок должен быть скрыт.
$.each($('.checkbox'), function(index, val) {
		if ($(val).prop('checked')) {
			$('.block').show();
			return true;
		}
	});

За работоспособность не уверен, не проверил. Но суть такова.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы