jQuery - Prüfen Sie die aktuellen Stand der radio-button ein und ausblenden, div
FRAGE: Wie würde ich überprüfen Sie den Wert eines radio-button onload aus, und wenn es ein bestimmter Wert ist, eine Aktion durchzuführen und basiert auf, der? Verwiesen wird am Ende von meinem code in der wenn - Anweisung.
AUSFÜHRLICHERE ERKLÄRUNG
So, ich weiß, der Titel klingt vertraut, um andere Fragen, aber ich habe ein wenig mehr zu engagieren und versuchen zu finden der beste Weg, sich ihm zu nähern. Also, in meiner Funktion homepageDisplayHandleSelection()
ich zu verstecken/zeigen die Bereiche auf der Grundlage der Auswahl des radio-buttons aus, dass innerhalb .homepage_display
Bereich. Dann, ich benutze grundsätzlich, dass die gleiche Funktionalität für eine andere Gruppe von radio-buttons innerhalb es genannt mainImageLinkHandleSelection
und dann versteckt/zeigt Bereiche an, basierend auf der Auswahl. Ich kann wechseln zwischen den Static
und Slide
option ganz gut, aber die erste Ansicht (wenn Slideshow
ist ausgewählt, wenn die Seite geladen wird) ist, dass es noch mit der sekundären radio-buttons mainImageLinkHandleSelection
und es ist nicht, bis ich Sie aus der Slideshow
option und zurück Static
dass es korrigiert sich.
So, ich habe versucht, dies zu beheben (unten im Beispiel-code), indem Sie überprüft, ob der aktuelle radio-Wert, der überprüft wird, ist slideshow
und wenn ja, Verstecke ich ein div namens main_link
(die ist auch an jedem der Gebiete rund um den mainImageLinkHandleSelection
divs). Ich weiß, meine Frage hat paar Teile, aber ich dachte, wenn jemand helfen könnte, es wäre ein Genie irgendwo da draußen 😉 vielen Dank für jegliche Hilfe!
jQuery(document).ready(function() {
//Homepage Settings - Homepage Display
//This function handles the radio clicks.
function homepageDisplayHandleSelection() {
var duration = 400;
jQuery('.homepage_display').hide(duration);
jQuery('.main_link').hide(duration);
if (this.value === "slideshow") {
jQuery('.homepage_display_slides').show(duration);
} else if (this.value === "static") {
jQuery('.homepage_display_static').show(duration);
}
}
//Attach a click handler to the radios
//and trigger the selected radio
jQuery('#section-of_homepage_display :radio')
.click(homepageDisplayHandleSelection)
.filter(':checked').trigger('click');
//Homepage Settings - Main Link Options
//This function handles the radio clicks.
function mainImageLinkHandleSelection() {
var duration = 400;
jQuery('.main_link').hide(duration);
if (this.value === "external_url") {
jQuery('.main_link_external').show(duration);
} else if (this.value === "wp_page") {
jQuery('.main_link_page').show(duration);
}
else if (this.value === "wp_post") {
jQuery('.main_link_post').show(duration);
}
else if (this.value === "wp_taxonomy") {
jQuery('.main_link_category').show(duration);
}
}
//Attach a click handler to the radios
//and trigger the selected radio
jQuery("#section-of_main_image_link_option :radio")
.click(mainImageLinkHandleSelection)
.filter(":checked").trigger("click");
//Make sure main image link option are hidden by default if slideshow option is selected
if (jQuery('#section-of_homepage_display :radio :checked').val() === 'slideshow') {
jQuery('.main_link').hide();
}
});
Macht Sinn, das zu tun - vielen Dank, ich habe aktualisiert.
InformationsquelleAutor Zach | 2011-11-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut, ich gehe davon aus, dass jedes Optionsfeld hat einen eindeutigen Wert, und Sie sind alle den gleichen Namen. In diesem Fall, was Sie wollen, ist die
:checked
selector:Dass Sie den Wert des aktuell ausgewählten radio-button. Wenn Sie bereits die
id
auf die radio-Taste, die Sie überprüfen möchten, und es ist so einfach wie:Speziell, da Sie gezielt überprüfen wollen, auf die
slideshow
Wert, ich glaube, Ihreif
Aussage:BEARBEITEN: ich sehe dein Problem jetzt. Das problem ist, dass Sie verstecken alle
.main_link
Elemente, sowie die.homepage_display
Elemente. Aber wenn Sie klicken Sie auf der Startseite die Auswahl radio-button, die Sie nicht dann gehen Sie durch und re-display .main_link element, das sich durch denyhlumberyardstraditional3[of_main_image_link_option]
radio button-group.Zwei Dinge:
change
event-handler anstelle vonclick
. Dies wird verhindern, dass die ganze animation von unnötigerweise ausgeführt wird, wenn ein bereits ausgewählten radio-button geklickt werden.change
Ereignishandler für diese radio-buttons.Ich habe mich vor ein aktualisiert Ihre Geige mit einem proof-of-concept. Die wichtigste änderung ist wie folgt:
Nahm ich auch die Freiheit, die Verallgemeinerung des Problems und verkleinert den code unten zu 39 Zeilen. Check it out hier.
.main_link
Bereiche (die ist groß!) aber, wenn ich entscheiden, klicken Sie auf die option Statisch (das wäre dann öffnen sich diemainImageLinkHandleSelection()
Funktion, wenn ein radio-button ausgewählt wurde, wiewp_pages
das Eingabefeld für diese ist standardmäßig ausgeblendet, anstatt - so hat ein user neu klicken Sie auf die ausgewählte option für Sie zu zeigen, anstatt diemainImageLinkHandleSelection()
Umgang mit diesem. Hier ist, was ich für meine komplette code im moment (den unteren Teil geändert): jsfiddle.net/ebBPb vielen Dank!Einige HTML würde auf jeden Fall helfen
Hi @Bryan - sicher (sorry dafür), hier ya go jsfiddle.net/d5aYb Also Sie sehen, die
Slideshow
radio option ist standardmäßig ausgewählt und es verbirgt nichts, dass dieStatic
option zeigen würde, aber wenn Sie wählen SieStatic
sehen Sie einige link-Optionen angezeigt (in einem radio-Liste) und auch wenn dieExternal Link
option angezeigt wird (und sollte einen entsprechenden Textfeld angezeigt) es ist nicht, bis Sie wählen Sie es erneut, dass die box korrekt angezeigt. Danke!Es dauerte eine Weile, um tatsächlich herauszufinden, was zum Teufel Sie versuchen zu erreichen mit den HTML-Code, aber ich habe endlich durch. Werde ich ändern, meine Antwort wieder 🙂
Ich weiß ehrlich nicht was ich sagen soll... so eine GROßE Hilfe! Definitiv einige Sachen drin, die ich brauche, um zu Lesen, ich kann schreiben, jQuery, aber offensichtlich nicht sehr effizient 🙂 Takin diese auf eine ganz neue Ebene für mich, ich kann Ihnen nicht genug danken!
InformationsquelleAutor rossipedia