jQuery - выберите все на странице, кроме одного div

Как я могу выбрать все и все на странице, кроме определенного div, используя jQuery?

На самом деле я пытаюсь скрыть остальную часть фона во всплывающем окне определенного div. Но проблема в том, что не все находится внутри какого-то div. Некоторые элементы не имеют родительского блока div.

<body>
    12345

    <div id='second_div'>
       XXXXXX
    </div>

    56789

    <div id='popup'>
       AAAAA
    </div>
</body>

Я использую код ниже, но это не исчезающий контент, у которого нет родительского div (например, 12345 и 56789). Это только исчезающее содержимое «second_div» (т.е. XXXXXX ).

$('body > div:not(#popup)').css("opacity",'0.7');

Пожалуйста, подскажите, как это сделать с помощью jQuery.


person AnonGeek    schedule 08.05.2012    source источник
comment
Почему бы просто не добавить один div в качестве наложения, а затем разместить над ним специальный модальный div с более высоким z-индексом?   -  person j08691    schedule 09.05.2012
comment
Вам нужно обернуть его, прежде чем вы нажмете i... э, прежде чем вы его исчезнете..   -  person Loktar    schedule 09.05.2012


Ответы (2)


Я думаю, вы ищете это:

$("body > *").not('#popup').css("opacity", '0.7');

Причина, по которой это работает, заключается в том, что выбираются все прямые потомки body, а затем удаляются все прямые потомки, имеющие id из popup.

person Alec Gorge    schedule 08.05.2012
comment
Я просто перечитал вопрос. У меня сложилось впечатление, что развернутый текст не должен был затемняться. В этом случае единственное решение — обернуть их чем-то вроде div или p. - person Alec Gorge; 09.05.2012

Протестировал его и работает отлично, хотя я тестировал другой, и он не работает, но в любом случае, удачи!

var lines = $('body').html().split('\n');
$.each(lines, function(k, v){
  lines[k] = '<span>'+v+'</span>';
});

$('body').html(lines.join(''));

$('body > *').css("opacity", '0.7').find('#popup').parent().css("opacity", '1');
;
person Marian Zburlea    schedule 08.05.2012