Frage

Ich versuche / Einsturz zu öffnen Abschnitte meiner Website, die Fieldset mit dem Click-Ereignisse auf der Legende Tag ist. Allerdings werde ich brauche eine wrapInner zu verwenden, um ein div in der Fieldset hinzufügen, um den Inhalt zu verbergen ... aber dies verbirgt sich auch die Legende (die auf jeden Fall möchte ich nicht tun) :-). Wie kann ich wrapInner verwenden, aber geben Sie nicht die Legende zu verbergen (oder alternativ das erste Element innerhalb des fieldset enthalten - wie es wird immer die Legende sein).

$("#mainarea fieldset").wrapInner("<div class='fieldsetWrapper'></div>");

$("#mainarea fieldset:not(:first)").addClass("fsClosed"); // Close all fieldsets within the main area (but not the first one)

$("#mainarea fieldset legend").mousedown(function(){  // When clicking the legend of a fieldset ...
    $("#mainarea fieldset:not(.fsClosed)").addClass("fsClosed");  // If it's already open, close it
    $(this).parent().removeClass("fsClosed");  // If it's closed, remove the closed class from the containing fieldset
    return false;
}); 

Prost Mark

War es hilfreich?

Lösung

Als Antwort auf Ihre Kommentare in Pims Beispiel müssen Sie eine Schleife durch die Fieldset

$('#mainarea fieldset').each(function(){
   $(this).children().not('legend').wrapAll("<div class='fieldsetWrapper'></div>");
});

Sie könnten wahrscheinlich, dass so zu etwas Refactoring;

$('#mainarea fieldset').each(function(){
   $(':not(legend)', this).wrapAll("<div class='fieldsetWrapper'></div>");
});

Andere Tipps

$('#mainarea fieldset').children(':gt(0)').wrapAll("<div class='fieldsetWrapper'></div>");

Dies sollte den Trick.
Info auf der wrapAll Funktion: http://docs.jquery.com/Manipulation/wrapAll#html >

Bearbeiten
vielleicht noch besser:

$('#mainarea fieldset').children().not('legend').wrapAll("<div class='fieldsetWrapper'></div>");

Ich landete mit der folgenden Lösung:

//Wrap everyting in the fieldset tags
$('#mainarea fieldset').wrapInner("<div class='fieldsetWrapper'></div>");
 
//for each legend tag move it out of the newly created wrapping div 
$('legend').each(function(){
  $(this).insertBefore($(this).parent());
});

Zuerst wickelt es alles innerhalb der fieldset-Tags (einschließlich der Legende) es dann ‚auspackt‘ die Legende Tags.

$(document).ready(function(){
    $("fieldset legend").click(function(){
        $(this).parent().children().not('legend').toggle("slow");
    });
});
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top