JQuery onclick用另一个类选择这个

JQuery onclick用另一个类选择这个,jquery,class,this,Jquery,Class,This,我有这样一个代码: $(".um").click(function () { $(".subconteudo.dois").slideUp(); $(".subconteudo.tres").slideUp(); $(".subconteudo.quatro").slideUp(); $(".subconteudo.cinco").slideUp(); $(".subconteudo.um").slideDown(3000); }); $(".um, .

我有这样一个代码:

$(".um").click(function () {
    $(".subconteudo.dois").slideUp();
    $(".subconteudo.tres").slideUp();
    $(".subconteudo.quatro").slideUp();
    $(".subconteudo.cinco").slideUp();
    $(".subconteudo.um").slideDown(3000);
});
$(".um, .dois, .tres, .quatro, .cinco").click(function () {
    $(".subconteudo.um").slideUp();
    $(".subconteudo.dois").slideUp();
    $(".subconteudo.tres").slideUp();
    $(".subconteudo.quatro").slideUp();
    $(".subconteudo.cinco").slideUp();
    $(this + ".subconteudo").slideDown();
});
<div class="menu">
    <div class="submenu um"></div>
    <div class="submenu dois"></div>
    <div class="submenu tres"></div>
    <div class="submenu quatro"></div>
    <div class="submenu cinco"></div>
</div>
<div class="conteudo">
    <div class="subconteudo um"></div>
    <div class="subconteudo dois"></div>
    <div class="subconteudo tres"></div>
    <div class="subconteudo quatro"></div>
    <div class="subconteudo cinco"></div>
</div>
每门课多5次(嗯,dois,…)。我正试图用“this”来编写一个更小的代码,如下所示:

$(".um").click(function () {
    $(".subconteudo.dois").slideUp();
    $(".subconteudo.tres").slideUp();
    $(".subconteudo.quatro").slideUp();
    $(".subconteudo.cinco").slideUp();
    $(".subconteudo.um").slideDown(3000);
});
$(".um, .dois, .tres, .quatro, .cinco").click(function () {
    $(".subconteudo.um").slideUp();
    $(".subconteudo.dois").slideUp();
    $(".subconteudo.tres").slideUp();
    $(".subconteudo.quatro").slideUp();
    $(".subconteudo.cinco").slideUp();
    $(this + ".subconteudo").slideDown();
});
<div class="menu">
    <div class="submenu um"></div>
    <div class="submenu dois"></div>
    <div class="submenu tres"></div>
    <div class="submenu quatro"></div>
    <div class="submenu cinco"></div>
</div>
<div class="conteudo">
    <div class="subconteudo um"></div>
    <div class="subconteudo dois"></div>
    <div class="subconteudo tres"></div>
    <div class="subconteudo quatro"></div>
    <div class="subconteudo cinco"></div>
</div>
可能吗?怎么用? 非常感谢。 顺便说一下,html代码如下所示:

$(".um").click(function () {
    $(".subconteudo.dois").slideUp();
    $(".subconteudo.tres").slideUp();
    $(".subconteudo.quatro").slideUp();
    $(".subconteudo.cinco").slideUp();
    $(".subconteudo.um").slideDown(3000);
});
$(".um, .dois, .tres, .quatro, .cinco").click(function () {
    $(".subconteudo.um").slideUp();
    $(".subconteudo.dois").slideUp();
    $(".subconteudo.tres").slideUp();
    $(".subconteudo.quatro").slideUp();
    $(".subconteudo.cinco").slideUp();
    $(this + ".subconteudo").slideDown();
});
<div class="menu">
    <div class="submenu um"></div>
    <div class="submenu dois"></div>
    <div class="submenu tres"></div>
    <div class="submenu quatro"></div>
    <div class="submenu cinco"></div>
</div>
<div class="conteudo">
    <div class="subconteudo um"></div>
    <div class="subconteudo dois"></div>
    <div class="subconteudo tres"></div>
    <div class="subconteudo quatro"></div>
    <div class="subconteudo cinco"></div>
</div>

为什么不仅仅是这个

$(".um, .dois, .tres, .quatro, .cinco").click(function () {
    if($(this).hasClass('subconteudo')) {
       $(".subconteudo").not(this).slideUp();
    }
    else if ($(this).hasClass('submenu')) {
       $(".submenu").not(this).slideUp();
    }
    $(this).slideDown(3000);
});

由于所有元素似乎都有一个公共类
subceundo
,因此您可以始终将它们作为目标,而不包括当前单击的元素。

使用
filter()
和一个简单的正则表达式(
/\b(um | dois | tres | quatro cinco)\b/g
)尝试此解决方案:

它通过正则表达式在类中获取菜单。这是必要的,因为
菜单可以有一个以上的列表类
.um、.dois、.tres、.quatro、.cinco
-(如果有,它会按照以下顺序选择第一个找到的类:
.um
->
.dois
->
.tres
->
.quatro
->
.cinco
,这是有意的)

此外,这将防止单击的
subceudo
向上滑动。(将仅向上滑动其他部分。)


为所有这些设置一个公共类,然后执行
$('.commonclass')。单击(function(){$('.subceudo').slideUp();})
,这样可以保存6行内容。

是的!:)

您只能使用4行。我对原来的HTML代码做了一点修改,但我认为现在更好了

JS

HTML


菜单1
菜单2
菜单3
菜单4
菜单5
情境1
情境2
情境3
情境4
情境5

为什么不干脆
$(这个).slideDown()
?为所有这些设置一个公共类,然后执行
$('.commonclass')。单击(function(){$('.subceudo').slideUp();})
,这样你可以节省6行。@SebastianUrielMurawczik回答这个问题!我必须指定要向上滑动的前一个类,否则它不会执行任何操作因为您没有常见的类出现,您可以在单击的元素上检查该类。。选中编辑。。如果您有多个类,这会很麻烦,因此对于每个类实例,您都需要一个检查条件。。你可以使用一个普通的类,我编辑了答案。代码的行为是相同的,但它更简单。这是我一直在寻找的,但我需要你退休的类,所以我更容易使用来自acdcjunior的代码。