JQuery - удалить div на основе родительского класса div - PullRequest
1 голос
/ 08 сентября 2010

Я пытаюсь создать сценарий jQuery, который удалял бы div / s в зависимости от класса родительского div, например, на основе родительского div-класса ниже, т.е. & 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-one и sideColumn-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 никогда не удаляется

Любая помощь будет принята с благодарностью.

1 Ответ

3 голосов
/ 08 сентября 2010

Редактировать: Для обновленной разметки

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

Вы можете попробовать здесь


Предыдущий ответ: Не изменяя свою разметку, вы можете сделать что-то вроде этого:

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

Вы можете попробовать здесь , хотя, если вы упростили это, предоставив родителю тот же класс дляпример:

<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();​

Вы можете попробовать эту версию здесь , если вы хотите удалить, а не скрыть их, просто замените .hide() на .remove().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...