【问题标题】:jQuery - remove div based on parent div classjQuery - 基于父 div 类删除 div
【发布时间】:2013-01-09 19:08:21
【问题描述】:

我正在尝试创建一个 jQuery 脚本,该脚本将根据父 div 的类删除 div/s,例如基于下面的父 div 类,即 one-column 我想删除 div sideColumn-two &sideColumn-three

<div id="footer" class="one-column">
    <div class="wrapper">
        <div class="contentColumn">
            Main Content Column
        </div>
    </div>

    <div class="sideColumn-one">
        Side Column 1
    </div>

    <div class="sideColumn-two">
        Side Column 2
    </div>

    <div class="sideColumn-three">
        Side Column 2
    </div>       
</div>

如果父级的 div 类是 two-column,那么它将删除 div sideColumn-onesideColumn-three,依此类推。

附加信息 - 父 div 的调用如下:

one-column
one-column-three
one-column-two-one
two-columns-left-sidebar
two-columns-right-sidebar
two-columns-equal
two-columns-equal-right
two-columns-50
two-columns-stacked-left
two-columns-stacked-right
two-columns-mixed
two-columns-mixed-left
two-columns-mixed-content-left
three-columns-mid
three-columns-equal
three-columns-sidebars-right
three-columns-sidebars-left
four-columns-equal
four-columns-mag

div contentColumn 永远不会被删除

任何帮助将不胜感激。

【问题讨论】:

    标签: jquery jquery-selectors


    【解决方案1】:

    编辑:更新标记

    var num = $("#footer").attr("class").replace("-column","");
    $("#footer > div:gt(0):not(.sideColumn-" + num + ")").hide();​
    

    You can try it here


    上一个答案:不改变你的标记,你可以这样:

    var nums = { one: 1, two: 2, three: 3 };
    var num = $("#test").attr("class")​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​.replace("-column","");
    $("#test > div:not(.col" + nums[num] + ")").hide();​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​
    

    You can give it a try here,但如果您通过给父级提供相同的类来简化它,例如:

    <div id="test" class="col1">
        <div class="col1">
            Col 1
        </div>
        <div class="col2">
            Col 2
        </div>    
        <div class="col3">
            Col 3
        </div> 
    </div>​
    

    脚本变得更简单,如下所示:

    $("#test > div:not(." + $("#test").attr("class") + ")").hide();​
    

    You can try that version here,如果您想删除而不是隐藏它们,只需将.hide() 替换为.remove()

    【讨论】:

    • 不幸的是,我不能让父级具有相同的类,因为它决定了布局的方式,即在某些情况下我会显示两列并只删除一列
    • 顺便说一句,谢谢尼克,我现在正在用实际代码测试它
    • 尼克 - 感谢您的输入,非常感谢,但是,根据我拥有的实际 html,脚本将无法正常工作,我的错误是没有将其包含在此处,但现在已经这样做了,我的道歉。
    • @saidsl - 根据您的标记,试试这个:jsfiddle.net/nick_craver/XpdsC/2
    • @Nick - 谢谢尼克,到了那里,只是注意到我应该说如果它是两列而不是删除第三列。基本上我需要实现的是这样的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-18
    • 2016-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多