2012-04-02 10 views
0

ユーザーが#電子メールフォームのdivをクリックすると、非表示になり、#stampが再び表示されます。 --------------------------jQueryオーバーレイでOUTをクリック

  jQuery('#email-form').hide(); 

     jQuery('#stamp').click(function() { 
      jQuery(this).hide();  
      jQuery('#email-form').show(); 
      jQuery(

     }); 

     jQuery('.overlay').click(function() { 
       jQuery('#email-form').hide(); 
       jQuery('#stamp').show(); 
     }); 

..私は、オーバーレイdiv要素でこれを行うにしようとしていますが、それは働いていません-------- HTML ------------------------------

<div class="overlay" style="width:100%; height:100%;"></div> 
<div id="stamp"><img src="email_postmark.png"/></div> 
<div id="email-form"> 
    <form id="signup" action="<?=$_SERVER['PHP_SELF']; ?>" method="get"> 
     <span id="response"> 
    <?php require ('store-address.php'); if($_GET['submit']){ echo storeAddress(); } ?> 
    </span> 
    <input type="text" name="email" id="email" placeholder="TYPE EMAIL & PRESS ENTER"/> 
    </form> 
    </div> 
+1

これは別のアイデアです:イベントハンドラを 'document.onclick'にバインドし、#電子メールフォームにバブルするすべてのクリックの伝播を停止します。 – Niko

答えて

1

このようにそれを試してみてください。http://jsfiddle.net/awEGq/1/

position:fixedあなたはスクロールバーを持っている場合でも、それは常に背景全体をいっぱいにすることを確認します。 position:absoluteを使用すると、オーバーレイをスクロールすることができます。

display:fixedのため、オーバーレイは残りのページの上に配置されます。これを防ぐため、私はそれをさらにz-indexで置きました。

background-colorは、オーバーレイがどこにあるかを示すためのものです。あなたは実際の実装でそれを削除することができます。

+0

何らかの理由で、イメージを戻すためにオーバーレイをクリックしたときに機能しません。 – MG1

+0

私のサンプルでも同様ですか?それはここで働くからです。 –

+0

z-indexを削除すると動作します。 – MG1

1

概要コメントは、ここでは異なるアプローチです:

var hideEmailForm = function() { 
    jQuery('#email-form').hide(); 
    jQuery('#stamp').show(); 
}; 

jQuery('#stamp').click(function(event) { 
    jQuery(this).hide();  
    jQuery('#email-form').show(); 

    event.stopPropagation(); // <-- NEW! 
    jQuery(document).one('click', hideEmailForm); 
}); 

jQuery('#email-form').click(function(event) { 
    event.stopPropagation(); 
}); 

はあなたが#のメールフォームを非表示にしている時はいつでもdocument.onclickから「hideEmailForm」をアンバインドすることを忘れないでください!

jQuery('#email-form').unbind('click', hideEmailForm); 
+0

これは、両方の要素が表示されたページを読み込み、#stampをクリックすると#電子メールフォームだけを隠します。 – MG1

+0

これは単なるスニペットです。これを既存のコードと統合する必要があります。 – Niko

+0

私はそれを実現していますが、ここではちょっと論理があると思われます。 – MG1

関連する問題