2012-05-11 16 views
7

を選択:jqueryのは、私はこのHTML/CSSコードを持つすべてのdivを除く要素とその子

<body> 
     <!-- BEGIN: HEADER AREA --> 
     <?php require("snippets/header_area.php"); ?> 
     <!-- END: HEADER AREA --> 
     <div id = "presentation_area"> 
      <div id = "submenu_area"> 
       <div id = "sliding_menu_area"> 
       </div> 
       <div id = "tags"> 
        <div id = "1"> 
         <img src = "lang/el/images/1.png" /> 
        </div> 
        <div id = "2"> 
         <img src = "lang/el/images/2.png" /> 
        </div> 
        <div id = "3"> 
         <img src = "lang/el/images/3.png" /> 
        </div> 
        <div id = "4"> 
         <img src = "lang/el/images/4.png" /> 
        </div> 
       </div> 
      </div> 
     </div> 
    </body> 

私は、ユーザーが#sub_menu_areaを除く他のすべてをクリックしたときに機能をトリガしようとしています。私は、JSの以下の部分を使用します。

$('*').not('#submenu_area').click(function(){ 
     if(slide == "open"){ 
      $('#sliding_menu_area').toggle(effect); 
      slide = "close"; 
     } 
    }); 

は、残念ながら、子供たちは何とか除外し、上のそれは多くの時間を切り替えますクリックされていません。誰もそれを正しく行う方法を知っていますか? :)

EDIT: だから私は必要なものを適切に取得するためのjQueryのセレクタです:on click of all elements of body EXCEPT for #submenu_area and its descendants。この

+0

あなたは '$(この)'にトグルを操作してもらえますか?それはあなたがしたいことの中心にあるのでしょうか? – veeTrain

+0

いいえ、私は「これとその子ども以外のすべて」のようなものを欲しいからです。あなたは '$(this)'の実例を持っていますか? –

+0

申し訳ございません。私はおそらく、あなたが見ているものと起こっていてほしくないものを正確に理解していないでしょう。私はあなたが望むよりも多くのエフェクトがトグルしていることに気づいていますが、jsfiddle.netを作成すると、ビヘイビアを具体的に表示すると便利です。私はあなたがクリックされたものをトグルしたいと思ったが、彼らは 'submenu_area'の子孫であるので、あなたは**画像なし**を見ようとしているように聞こえますね。 – veeTrain

答えて

16

はこれを試してみてください:

$(document).click(function(e) { 
     if ($(e.target).is('#submenu_area, #submenu_area *')) { 
      return; 
     } 
     if(slide == "open"){ 
      $('#sliding_menu_area').toggle(effect); 
      slide = "close"; 
     } 
    }); 
+0

タイメイト!出来た! :) –

+0

行く方法;これはかなり難題でした。あなたはあなたの答えを持ってうれしい@Jonur – veeTrain

4

用途:

$('*').not("#submenu_area *").click(function() { ... }); 
+0

角括弧は属性のみではありませんか?私はあなたの提案を試みましたが、うまくいきませんでした... –

+0

これは '$( '*:not(#submenu_area)')'ですが、このアイデアはOPが望んでいることをやり遂げません。 – thirtydot

+0

これは本当です(修正済み)。そして、なぜこれがOPが望んでいることをしないでしょうか? –

関連する問題