2012-01-22 7 views
0

私はこれらのdivにこのクラス名がない限り、すべてのdivを閉じるスクリプトを用意しています。次のスクリプトは正常に動作します。Javascript Jquery - 子要素がクリックされた場合は閉じないでください

window.onclick = function(ev){ 
    if((ev.target.className !== 'ddHeader') && (ev.target.className !== 'ddSubmenu')&& 
    (ev.target.className !== 'ddContainer')&& (ev.target.className !== 'ddItem')){ 
     delay_close_sub(); 
    } 
}; 

これで、私は同じことを子要素で行う必要があります。私はこれに似上記のコードに追加したいと思います:

window.onclick = function(ev){ 
    if((ev.target.className !== 'ddHeader') && (ev.target.className !== 'ddSubmenu')&& 
    (ev.target.className !== 'ddContainer')&& (ev.target.className !== 'ddItem') && 
    ev.target.element !== 'ddHeader > input){ 
     delay_close_sub(); 
    } 
}; 

私が追加:最後にev.target.element ==「ddHeader>入力を」)が、それは動作しません!。どのように私はこの作品を作るだろうか?私はddHeader divの内側の入力フィールドがあるとき「delay_close_sub()関数をトリガしません、それをクリックすることを確認する

感謝を任意の助けのため

答えて

2
イベントターゲットあれば意味はどの

$(window).click(function(ev){ 
    if(!$(ev.target).is('.ddHeader,.ddSubmenu,.ddContainer,.ddItem,.ddHeader > input')) 
     delay_close_sub(); 
}); 

あなたははるかに効率的 コンパクトにjQueryのを使用することができますカンマで区切られたセレクタと一致しない場合は、閉じる。

+0

素晴らしい作品です!ありがとうございました。 – user982853

+0

これは効率的ではありませんが、実際には非常に非効率です。私は言葉がありません – Esailija

+0

どうやったらいいですか? – ori

関連する問題