我有这个HTML结构:
<form>
<input class="myTrigger" type="radio" value="1"/>
<input class="myTrigger" type="radio" value="2"/>
<fieldset>
<ul class="class1">
<li></li>
</ul>
<ul class="class2">
<li></li>
</ul>
</fieldset>
<fieldset>
<ul class="class2">
<li></li>
</ul>
<ul class="class2">
<li></li>
</ul>
</fieldset>
</form>
使用jQuery,我需要浏览每个ul
并隐藏那些没有myClass
的内容checked
{{1} } radio
)然后我需要检查现在为空的.myTrigger
的(即:fieldset
,其中没有ul有类fieldsets
)< / em>并完全隐藏它们。
到目前为止,我能够隐藏所需的myClass
,但不能隐藏ul
。这就是我得到的:
fieldsets
此外,我在同一页面上有其他脚本切换相同的ul
function myFunction() {
var myClass = "class"+($("radio:checked").attr("value"));
var productGroup = $("form ul");
$("form fieldset").each(function(index){
groupCheck = 0;
$.each(productGroup, function(index, obj){
if($(obj).hasClass(myClass))
{
groupCheck += 1;
$(obj).show();
}
else
{
$(obj).hide();
};
})
if (groupCheck == 0)
{
$(this).hide();
}
else {
$(this).show();
};
});
};
myFunction();
$(".myTrigger").change(myFunction);
ex:
因此无法隐藏已经隐藏的(legend).click(function(){$(this).siblings("ul").toggle();});
隐藏的字段集。相反,我需要寻找或不存在的类(“myClass”)。
(即:当小脚本为了方便用户而搜索ul时,“myFunction”需要根据“myTrigger”选择过滤ul和字段集。)
答案 0 :(得分:2)
不需要循环;只需使用适当的选择器定位您想要显示/隐藏的内容:
var myClass = 'class' + $('radio:checked:first').attr('value');
// Hide all the <ul>s
$('ul.' + myClass).hide();
// First, show all the fieldsets, in case any were hidden earlier
$('fieldset').show();
// Now hide the ones that don't have any visible <ul>s inside
$('fieldset:not(:has(ul:visible))').hide();