jQuery-show/hide DIVs是指它们有一个特定的类

jQuery-show/hide DIVs是指它们有一个特定的类,jquery,Jquery,这是我的密码: <div id="principal" class="classxx"> <div class="class001 cat2 blabla"> <div class="class002"> <div class="class003"></div> <div class="class004"></div> <div cla

这是我的密码:

  <div id="principal" class="classxx">
    <div class="class001 cat2 blabla">
      <div class="class002">
        <div class="class003"></div>
        <div class="class004"></div>
        <div class="class005"></div>
      </div>
    </div>
    <div class="class001 cat3 blabla">
      <div class="class002">
        <div class="class003"></div>
        <div class="class004"></div>
        <div class="class005"></div>
      </div>
    </div>
    <div class="class001 cat1 blabla">
      <div class="class002">
        <div class="class003"></div>
        <div class="class004"></div>
        <div class="class005"></div>
      </div>
    </div>
  </div>
如果我调用
showOnlyCat('cat3')
我只想看到所有具有“cat3”类的DIV(每个DIV都有多个类)及其子类 函数必须只针对DIV#principal的第一个子级

我还需要一个显示DIV#principal的所有子DIV的
showAllCat()

非常感谢你的帮助

function showOnlyCat(className){
 $("#principal").children().hide().filter("."+className).show();
}

function showAllCat(){
 $("#principal").children().show();
}
编辑:修复了错误。测试。它起作用了

编辑2:遵循@gnarf的好建议

编辑:修复了错误。测试。它起作用了


Edit2:@gnarf给了你很好的建议,你可以这样做:

function showAllCat() {
    $('#principal div').each(function() {
        $(this).css('display', 'block');
    })
}

function showOnlyCat(className) {
    $('#principal div:not(.' + className + ')').each(function() {
        $(this).css('display', 'none');
    })

    $('#principal div.' + className).each(function() {
        $(this).css('display', 'block');
    })
}

//other way:
function showOnlyCat1(className) {
    //hide all
    $('#principal div').each(function() {
        $(this).css('display', 'none');
    })
    //showing only class parameter
    $('#principal div.' + className).each(function() {
        $(this).css('display', 'block');
    })
}

您好,使用jQuery,您可以这样做:

function showAllCat() {
    $('#principal div').each(function() {
        $(this).css('display', 'block');
    })
}

function showOnlyCat(className) {
    $('#principal div:not(.' + className + ')').each(function() {
        $(this).css('display', 'none');
    })

    $('#principal div.' + className).each(function() {
        $(this).css('display', 'block');
    })
}

//other way:
function showOnlyCat1(className) {
    //hide all
    $('#principal div').each(function() {
        $(this).css('display', 'none');
    })
    //showing only class parameter
    $('#principal div.' + className).each(function() {
        $(this).css('display', 'block');
    })
}

你已经问了这个问题,得到了4个答案@Gareth,同意。投票以完全相同的方式结束。你已经问了这个问题,并得到了4个答案@Gareth,同意。投票以完全重复的方式关闭。您可以将
.filter('..+className).show()
链接到
.hide()
的末尾,以便更准确…似乎正确,但我无法使其正常工作,请看:@gnarf,您能再解释一下吗?@jrm,对不起,这是旧版本!新的更好。你可以将
.filter('.+className).show()
链接到
的末尾。hide()
更准确一些…似乎是正确的,但我无法让它工作,看:@gnarf,你能再解释一下吗?@jrm,对不起,那是旧版本!新的好多了。