показать, если установлен 1 флажок, скрыть, если НЕСКОЛЬКО НЕПРОВЕРЕННЫХ jquery

Привет, я хотел бы выяснить, как сделать некоторую логику на дилемме флажка.

У меня есть список видео с тегами, связанными с ним.

Там есть соответствующий флажок.

Когда флажок установлен, список (отображение: нет) отображается с использованием jquery.

Теперь, поскольку у каждого видео есть несколько тегов. Противоположная функция окажется нежелательной, потому что, если флажок НЕ установлен, он удалит связанные с ним видео, ВКЛЮЧАЯ видео, которые были показаны другими проверенными тегами. И поэтому, как только показывается div, он тут же снова скрывается. Вы следуете?

Я представляю что-то вроде

если (tag1 AND tag2 AND tag3 AND tag4 не отмечены), тогда (скрыть видео div)

как я могу сделать это реальностью?

Вот первая половина, остальное зависит от вас!!

$("#squaredThree<? echo $a_number  ?>").change(function() {
    var amount = 0;
    $("#squaredThree<? echo $a_number  ?>:checked").each(function(){

console.log('this has been determined to be ":checked"');

var theonestoshow = document.getElementsByClassName('<? echo $total_tags[$a_number]  ?>');

$(theonestoshow).show( "drop", 300); 

    });
});

Кроме того, на ваше рассмотрение представлен стилизованный интерфейс, чтобы вы могли понять, о чем я вообще говорю:

gui


person Community    schedule 15.05.2013    source источник
comment
Вы используете цикл .each() для $("#squaredThree<? echo $a_number ?>:checked") — значит ли это, что у вас есть несколько элементов с одинаковым идентификатором?   -  person nnnnnn    schedule 16.05.2013


Ответы (1)


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

В настоящее время вы используете цикл .each() для $("#squaredThree<? echo $a_number ?>:checked"). Значит ли это, что у вас есть несколько элементов с одинаковым идентификатором? Это недействительный HTML и не очень хорошо работает с вашим JS. Лучше дать всем рассматриваемым флажкам общий класс, потому что тогда вы сможете легко работать с ними как с группой. Скажите, что вы изменили их на все class="checks":

var $cbs = $(".checks").change(function() {
    if ($cbs.is(":checked")){
        $('.<? echo $total_tags[$a_number]  ?>').show( "drop", 300);
    } else {
        $('.<? echo $total_tags[$a_number]  ?>').hide( "drop", 300);
    }
});

Демонстрация: http://jsfiddle.net/DvGrD/

.is(":checked") вернет true, если какой-либо элемент в объекте jQuery проверен, и false, если ни один из них не отмечен.

(Конечно, если вы не хотите вносить изменения, чтобы ввести класс, вы все равно можете использовать ту же идею с селекторами по вашему выбору.)

person nnnnnn    schedule 15.05.2013