2011-05-31 3 views
2

У меня есть следующий DOM структура:Как вы удаляете все divs дочернего класса, кроме одного?

<div class="city"> 
    <div class="a">Delete</div> 
    <div class="b">Selected</div> 
    <div class="c">Delete</div> 
</div> 

Как сохранить город и класс ДИВА б, но удалить Div класс а и с, если вы знаете, что пользователь выбрал «б» (вы знаете, это используя logs your console.log (переменная))

В принципе, какой метод JQuery вы использовали бы для этого и как?

+0

Ваш '.a' ДИВ имеет некорректный закрывающий тег. Забыл '/'. Это будет препятствовать успеху некоторых из приведенных ниже ответов. – Sampson

+0

спасибо. исправлено это –

ответ

1
$('.city').find('.a, .c').remove(); 

Или

$('.city div:not(.b)').remove(); 

With class variable:

var selectedClass = 'b'; 
$('.city div').not('.' + selectedClass).remove(); 
+0

как вы можете сделать эту динамику? Могу ли я передать My_Variable в это? –

+0

@JZ - см. Обновление. –

+0

Мне нравится '.not ('.' + SelectedClass)' ответ. Это кажется более надежным. Я мог бы даже сделать его плагином, если бы это было нечто, что я использовал более одного раза. 'jQuery.fn.removeDivExcept = function (selectedClass) {...}' –

3
$('.city').children('div').not('.b').remove(); 
0

Попробуйте это:

$("div.city div.b").click(function() { 
    $(this).siblings().remove() 
}) 
0

В основном я будет делать:

$(".b").click(function() { 
    $(".a,.c").remove(); 
}); 
2

Учитывая вашу структуру, я бы, вероятно, использовать следующее:

$(".b").siblings().remove(); 

в действии: http://jsbin.com/akuno3/edit

+1

+1, кажется, самый логичный путь. –

Смежные вопросы