Javascript jQuery检查if语句中的元素是否可见不起作用

Javascript jQuery检查if语句中的元素是否可见不起作用,javascript,jquery,hide,show,Javascript,Jquery,Hide,Show,我需要一个一次只显示一个选定div的函数。除了if语句外,它几乎可以正常工作。如果div已经显示,我希望按钮隐藏该div。但它不起作用,我不知道为什么。谢谢你的帮助 jQuery(函数(){ jQuery('.showSingle')。单击(函数(){ jQuery('.targetDiv').hide(); if(jQuery('#div'+$(this.attr('target'))是(“:可见”)){ jQuery('.targetDiv').hide(); }否则{ jQuery('#

我需要一个一次只显示一个选定div的函数。除了if语句外,它几乎可以正常工作。如果div已经显示,我希望按钮隐藏该div。但它不起作用,我不知道为什么。谢谢你的帮助

jQuery(函数(){
jQuery('.showSingle')。单击(函数(){
jQuery('.targetDiv').hide();
if(jQuery('#div'+$(this.attr('target'))是(“:可见”)){
jQuery('.targetDiv').hide();
}否则{
jQuery('#div'+$(this.attr('target')).slideToggle();
}
});
});
.targetDiv{
显示:无;
}

第一组
第2组
第3组
第4组
益母草
益母草
益母草
Lorum Ipsum4
这是您所需要的全部:

jQuery(function() {
    jQuery('.showSingle').click(function(){
        jQuery('.targetDiv').slideUp();
        jQuery('#div'+$(this).attr('target')).slideToggle();
    });
});
演示:

jQuery('.showSingle')。单击(函数(){
jQuery('.targetDiv').slideUp();
jQuery('#div'+$(this.attr('target')).slideToggle();
});

第一组
第2组
第3组
第4组
益母草
益母草
益母草

Lorum Ipsum4
函数的第一行隐藏了所有div:

$(".targetDiv").hide();
因此,当它测试目标DIV是否可见时,它不可见,因为您只是隐藏了它。您应该隐藏除目标之外的所有div:

$(".targetDiv:not(#div"+$(this).attr("target")+")").hide();
jQuery(函数(){
jQuery('.showSingle')。单击(函数(){
var targetID='#div'+$(this.attr('target');
jQuery('.targetDiv:not('+targetID+')).hide();
if(jQuery(targetID).is(“:可见”)){
jQuery('.targetDiv').hide();
}否则{
jQuery(targetID).slideToggle();
}
});
});
.targetDiv{
显示:无;
}

第一组
第2组
第3组
第4组
益母草
益母草
益母草

Lorum Ipsum4
建议您使用此代码创建一个JS提琴,并在您的问题中链接到它创建一个堆栈片段,以便示例在问题中是可执行的。您隐藏了所有的DIV,而不仅仅是目标DIV。我希望看到JS提琴,但同时请查看[jquery not question][1]:此问题与原始问题相同。单击按钮两次应该先显示DIV,然后隐藏它。@Barmar确定吗?对我来说,这个问题听起来像是想要的行为是一个
汽车单选按钮
类型系统..?问题是:如果div已经显示,我希望按钮隐藏它。运行原始代码,它做的事情和你的一样,只是在动画中有一点不同。复选标记不存在。。。我想你是对的:)