4

凡例タグのクリック イベントを持つフィールドセットであるサイトのセクションを開こうとしている/折りたたもうとしています。ただし、wrapInner を使用して、フィールドセット内に div を追加してコンテンツを非表示にする必要があります...ただし、これは凡例も非表示にします (これは絶対にしたくありません) :-)。どうすれば wrapInner を使用できますが、凡例を非表示にしないように指定できます (または、フィールドセット内に含まれる最初の要素 - 常に凡例になるため)。

$("#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;
}); 

乾杯マーク

4

4 に答える 4

7

ピムの例でのコメントに応えて、フィールドセットをループする必要があります

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

おそらく、これを次のようにリファクタリングできます。

$('#mainarea fieldset').each(function(){
   $(':not(legend)', this).wrapAll("<div class='fieldsetWrapper'></div>");
});
于 2009-01-20T01:02:07.560 に答える
4
$('#mainarea fieldset').children(':gt(0)').wrapAll("<div class='fieldsetWrapper'></div>");

これでうまくいくはずです。
wrapAll 関数に関する情報: http://docs.jquery.com/Manipulation/wrapAll#html >


おそらくさらに良い編集:

$('#mainarea fieldset').children().not('legend').wrapAll("<div class='fieldsetWrapper'></div>");
于 2009-01-19T22:36:39.787 に答える
0
$(document).ready(function(){
    $("fieldset legend").click(function(){
        $(this).parent().children().not('legend').toggle("slow");
    });
});
于 2009-03-09T18:09:41.857 に答える