我有以下带有两个字段集的html。我想为那些包含..if的字段集提供toggleSlide功能。如果任何字段集不包含div标签,id为“contents”shud not slide。如果有人可以提供Fiddler,我将不胜感激。
HTML
<!DOCTYPE html>
<html>
<head>
<script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<meta charset=utf-8 />
<title>Collapse fieldset when legend element clicked</title>
</head>
<body>
<fieldset><legend>Awesome</legend>
<div id="contents">
<p>
HELLO THERE
</p>
<p>
Awesome
</p>
awesome
</div>
</fieldset>
<br>
<fieldset><legend>Awesome 2</legend>
<p>
HELLO THERE
</p>
<p>
Awesome
</p>
awesome
</fieldset>
</body>
</html>
脚本
$("fieldset legend").click(function() {
if ($(this).parent().children().length == 2)
$(this).siblings().slideToggle("slow");
else
{
$(this).parent().wrapInner("<div>");
$(this).appendTo($(this).parent().parent());
$(this).parent().find("div").toggle();
}
});
答案 0 :(得分:2)
你可以试试这个: -
我已将id="contents"
更改为class="contents"
,因为ID必须是唯一的,而且似乎有多个id="contents"
会使html无效。如果没有,你可以在点击回调的第一行使用$(this).closest('fieldset').find('#contents').length == 0
。
$("fieldset legend").click(function () {
if ($(this).closest('fieldset').find('.contents').length == 0) return;
if ($(this).parent().children().length == 2) $(this).siblings().slideToggle("slow");
else {
$(this).parent().wrapInner("<div>");
$(this).appendTo($(this).parent().parent());
$(this).parent().find("div").toggle();
}
});
<fieldset>
<legend>Awesome</legend>
<div class="contents">
<p>HELLO THERE</p>
<p>Awesome</p>awesome</div>
</fieldset>
<br>
<fieldset>
<legend>Awesome 2</legend>
<p>HELLO THERE</p>
<p>Awesome</p>awesome</fieldset>