2012-05-08 1 views
0

jQueryを使用して特定のdiv以外のページのすべてを選択するにはどうすればよいですか?jQuery - 1つのdivを除いたページのすべてを選択

実際に私は特定の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を使用してこれを行う方法を教えてください。

+1

オーバーレイとして1つのdivを追加し、その上に特殊なモーダルdivを高いzインデックスで配置するのはなぜですか? – j08691

+0

フェードする前にタップする前にそれをラップする必要があります。 – Loktar

答えて

3

は、私はあなたがこのために探していると思う:それはbodyのすべての直接の子孫を選択し、popupidを持っているすべての直接の子孫を除去するので、これは動作します

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

理由があります。

+1

+1、ビートしてください。 –

+1

本当に動作しますか?http://jsfiddle.net/skram/wYvJU/ << –

+0

私はちょうど質問を再読しました。私は、アンラップされたテキストが「薄暗くなる」とは思われなかったという印象を受けました。その場合、唯一の解決策は 'div'や' p'のようなものにそれらをラップすることです。 –

1

私はもう一方をテストしましたが、とにかく、幸運ではありませんが、テストして完全に動作します!

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'); 
; 
関連する問題