2012-03-28 15 views
1

Ich bin ein Skript aus dieser Diskussion mit: https://wordpress.stackexchange.com/a/14711/14649jQuery Toggle() Ausgabe

Es funktioniert gut, aber wenn ich einen anderen Funkeingang wählen, wird die Originalverpackung nicht wechseln off (sehr schlecht), aber die neue Box erscheint (gut). Dies geschieht für alle zusätzlichen Felder, die ich hinzufüge.

jQuery ist nicht mein Ding, und ich habe herum ohne Glück erforscht! Hier ist mein Code:

<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> 

Danke für einen Blick!

+0

Können Sie das relevante HTML auch posten? –

+0

Können Sie Ihr Markup hinzufügen, was ist 'feature_box'? ist es ein div? Dieser Code kann mithilfe von Klassen anstelle von IDs modularisiert werden. –

Antwort

0

Der Grund, warum die andere Box nicht verschwindet, ist, weil Sie es nicht gesagt haben!

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

Dies sagt die Sichtbarkeit von #feature_box zu wechseln, wenn Sie auf #value_feature_box klicken. Wenn #value_feature_box kein Kontrollkästchen ist, ändern Sie den inneren Code in $("#feature_box").toggle();. Wenn Sie etwas wollen, als auch verschwinden, sagen sie dann:

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

Der Wert auf der Innenseite des Knebels() Klammern sagt es entweder zu erscheinen oder verschwinden (wahr oder falsch).

+0

Vielen Dank für Ihre Eingabe. Dies war die Lösung, die ich mir ausgedacht hatte, aber sie war ziemlich klobig, da ich etwa 10 Boxen haben werde, und ich fühle mich wie '$ (" # box_id "). Toggle();' könnte langweilig werden ... also weise ich jeder Box eine Klasse zu, um sie zu rationalisieren. Vielen Dank! –

0

Sie sind nur eine Box auf Klick Makeln - müssen Sie beide wechseln, finden Sie in diesem jsFiddle:

Mit diesem (und ähnlich für die anderen Kasten):

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

Sie sagen im Grunde - wenn geklickt (so this.checked wird immer wahr sein), schalten Sie das Element. Aus der Dokumentation:

Sie die Version von Toggle verwenden, die showOrHide Parameter und wobei immer wahr, so dass immer zeigt und nur das Feld, das auf geklickt wurde hat.

+0

Vielen Dank für Ihre Eingabe. Dies war die Lösung, die ich mir ausgedacht hatte, aber sie war ziemlich klobig, da ich etwa 10 Boxen haben werde, und ich fühle mich wie '$ (" # box_id "). Toggle();' könnte langweilig werden ... also weise ich jeder Box eine Klasse zu, um sie zu rationalisieren. Vielen Dank! –