2011-02-02 13 views
3

私は非常に単純な問題で問題につきまとうようでした。子がクリックされたときに親divを非表示にしようとしています。jQuery - 親を隠すことができません

ここは私のHTMLです。

<div class="wave-wrap"><div class="wave">click me</div></div> 

<div class="wave-wrap"><div class="wave">click me</div></div> 

<div class="wave-wrap"><div class="wave">click me</div></div> 

ここは私のjQueryです。

$('.wave').click(function() { 
alert($(this).parent().html());     
$(this).parent().hide('slow'); 
}); 

アラートには正しいセレクタがあるようですが、親のdivは非表示にしません。なぜどんなアイデア?

+0

私にはうまくいくはずです:/ hideTaggle()のようなものにhide()を変更してみてください。 – sevenseacat

+4

あなたは間違いなく疑問の外に何かを持っている、あなたはここで働いている質問の* only *あなたのコードを見ることができます:http://www.jsfiddle.net/nick_craver/ukRuK/ –

答えて

1

代わりに$(this).closest(".wave-wrap").hide()を試してください。

+0

こんにちは、 ありがとう。 私がhide()をslideToggleに切り替えると、それは親を操作するのが奇妙です。 hide()が動作していないのはなぜですか?ラッパーにdisplay:blockが設定されていますが、これはhide()によって上書きされるべきではありませんか? – Sam

+0

hide( 'slow')を使わずにhide()を使うだけで隠れることが分かりました。 なぜ私はこれを行うことができませんか? – Sam

0

コードは非常にうまく機能しています。次の例を見てください:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
     <title>Untitled Document</title> 
     <script type="text/javascript" src="jquery.js"></script> 
     <script type="text/javascript"> 
      $(document).ready(function(e) { 
       $('.wave').click(function() { 
        alert($(this).parent().html());     
        $(this).parent().hide('slow'); 
       }); 
      }); 
     </script>  
    </head> 

    <body> 
     <div class="wave-wrap"><div class="wave">click me</div></div> 

     <div class="wave-wrap"><div class="wave">click me</div></div> 

     <div class="wave-wrap"><div class="wave">click me</div></div>  
    </body> 
</html> 
+0

それは動作し、私は[JsFiddle](http://jsfiddle.net/We97L/)でテストしました。 – code4j

関連する問題