Проблема с jQuery toggle () - PullRequest
1 голос
/ 29 марта 2012

Я использую сценарий из этого обсуждения: https://wordpress.stackexchange.com/a/14711/14649

Он прекрасно работает, но когда я выбираю другой радиовход, исходное поле не переключается (плохо), но новое поледействительно появляется (хорошо).Это происходит с любыми дополнительными ящиками, которые я добавляю.

jQuery - не мое, и я безуспешно изучаю их!Вот мой код:

<script type='text/javascript'>
 jQuery(document).ready(function($) {
        $('#feature_box').hide();
        $('#standard_lead').hide();             

        // one box
        $('#value_feature_box').is(':checked') ? $("#feature_box").show() : $("#feature_box").hide();
        $('#value_feature_box').click(function() {
            $("#feature_box").toggle(this.checked);
        });

        // second box
        $('#value_standard_lead').is(':checked') ? $("#standard_lead").show() : $("#standard_lead").hide();
        $('#value_standard_lead').click(function() {
            $("#standard_lead").toggle(this.checked);
        });
    });
</script>

Спасибо, что заглянули!

Ответы [ 2 ]

0 голосов
/ 29 марта 2012

Причина, по которой другой блок не исчезает, заключается в том, что вы не сказали ему!

$('#value_feature_box').click(function() {
    $("#feature_box").toggle(this.checked);
});

Это говорит о переключении видимости #feature_box, когда вы нажимаете #value_feature_box.Если #value_feature_box не является флажком, измените внутренний код на $("#feature_box").toggle();.Если вы хотите, чтобы что-то тоже исчезло, то скажите это:

$('#value_feature_box').click(function() {
    $("#feature_box").toggle();
    $("#standard_lead").toggle();
});

Значение внутри скобок toggle () указывает, что оно появляется или исчезает (true или false).

0 голосов
/ 29 марта 2012

Вы переключаете только один блок на клике - вам нужно переключить оба, смотрите это jsFiddle:

С этим (и аналогичным длядругое поле):

    $('#value_feature_box').click(function() {
        $("#feature_box").toggle(this.checked);
    });

Вы в основном говорите - при нажатии (так что this.checked всегда будет true), переключите элемент.Из документов:

вы используете версию переключателя, которая имеет параметр showOrHide и всегда передает true, поэтому всегда отображается и только поле, которое былонажал.

...