2016-06-22 19 views
0

検索アイコンをクリックしてフォームが表示され、フォームのために)それは逃げる。別のクリックでdivにクラスを追加し、そのdiv要素とchild要素以外のbodyがクリックされた場合はクラスを削除

現在のところ、アイコンクリックで正しいクラスが適用され、本文のクリックで削除されますが、フォームの任意の場所をクリックすると非表示になります。フォームが隠されている(headerSearch内にある)場合、removeClassを無視したいと思います。あなたがしたいと思う何

$('html').click(function(e) { 
if(!$(e.target).hasClass('headerSearch')) 
{ 
$('.headerSearch').removeClass('display');    
} 
if($(e.target).closest('headerSearch').length) 
return; 
if($(e.target).hasClass('fa-search')) 
{ 
$('.headerSearch').addClass('display');    
} 
}); 
+3

あなたはhtmlも提供できますか? – ankit

+1

_ 'Y'がクリックされたときに' X'にクラスを追加するのは**とても**一般的な質問なので、XとYについてはほとんど同じです。あなたのXとYは_div_と_other div_です。 。ここでは[質問](http://stackoverflow.com/q/11068446/17300)です。ここで、XとYは_parent div_と_div_です。 –

+1

あなたがしたいことは、 '

'(またはそれを含むdiv)がクリックされたときにイベントの伝播を止めることです。そのため、bodyクリックハンドラがイベントに作用する ''までバブルアップしません。フォームを非表示にします。 jqueryの 'event.stopPropagation()'と 'event.stopImmediatePropagation()'を確認してください。 –

答えて

0

は(またはそれを含むDIV)がクリックされたときにイベントの伝播を停止しているので、身体のクリックハンドラがイベントに作用する場所とまでバブリングされずフォームを非表示にします。 jqueryのevent.stopPropagation()event.stopImmediatePropagation()

JavaScriptを部分的にしか使用していないので、質問にHTMLはありません。具体的にするのは難しいです。

関連する問題