jQuery + несколько флажков: Показать div на отмеченном, Скрыть на снятом - PullRequest
1 голос
/ 21 февраля 2011

Я получил несколько флажков, сгенерированных из скрипта PHP.

<input type="checkbox" class="checkbox" name="item[]" value="1" />

<input type="checkbox" class="checkbox" name="item[]" value="2" />

<input type="checkbox" class="checkbox" name="item[]" value="3" />

<input type="checkbox" class="checkbox" name="item[]" value="4" />

Теперь, когда флажок установлен, я хочу показать div с такими параметрами, как «Удалить выбранное». Но после того, как все флажки сняты, DIV должен снова исчезнуть. У меня есть следующий код, но он не скрывает DIV.

    $(".checkbox").live('click', function () {

        countChecked () ;

        if (countChecked() == "1" ) {

            $("div#options").fadeOut("medium") ;

        } else {

            if ( $("div#options").is(":hidden") ) {

                $("div#options").fadeIn ( "medium" ) ;

            }

        }

    });

Также ниже показана функция countChecked.

    function countChecked() {

        var n = $("input.checkbox:checked").length;

    }

Ответы [ 5 ]

2 голосов
/ 21 февраля 2011

Ваша функция должна вернуть значение:

function countChecked() {
    return $("input.checkbox:checked").length;
}

И вы хотите проверить, равна ли сумма 0 , также вы можете удалить повторный вызов на countChecked

$(".checkbox").live('click', function () {
    if (countChecked() == 0 ) {
0 голосов
/ 21 февраля 2011

Другая версия, с крошечной оптимизацией: http://jsfiddle.net/Briganti/XNWEP/

Веселитесь:)

0 голосов
/ 21 февраля 2011
0 голосов
/ 21 февраля 2011

Вы можете использовать

$('.checkbox').live('click',function(){
    // if you just checked the current one, no need to check the rest
    if (this.checked)
    {
      $('#options').fadeIn('medium');
    }
    else // if you just unchecked
    {
        if ( !$('.checkbox:checked').length ) // check the whole group
        {
            $('#options').fadeOut('medium');
        }
    }
});

демо на http://jsfiddle.net/gaby/wZWbS/

0 голосов
/ 21 февраля 2011

в вашей countChecked() -функции, используйте оператор return ..

 function countChecked() {

        var n = $("input.checkbox:checked").length;
        return n;

    }

и, нажимая на флажки ...

 $(".checkbox").live('click', function () {

        if (countChecked() == 0 ) {

            $("div#options").fadeOut("medium") ;

        } else {

            if ( $("div#options").is(":hidden") ) {

                $("div#options").fadeIn ( "medium" ) ;

            }

        }

    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...