2009-08-16 11 views
0

私はjQueryで新しくなりました(ちょうど今朝本を拾いました!)、要素を隠そうとしています。それは動作していないようです。jQuery - 要素が非表示になっています

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> 
<html> 
    <head> 
     <title>Test</title> 

     <script type="text/javascript" src="javascript/jquery-1.3.2.min.js"></script> 
     <script type="text/javascript"> 
      if ($) { 
       $(document).ready(

        function() { 

         $('ul li span').click(

          function() { 
           $(this).parent().children('ul').hide(); 
          } 

         ); 

        } 

       ); 
      } 
     </script> 

    </head> 
    <body> 

      <ul>       
       <li><a href="">My Controls <span class="arrow">&uarr;</span></a> 
        <ul> 
         <li><a href="">My Profile</a></li>  
        </ul>  
       </li> 
      </ul> 

    </body> 
</html> 

これは私が使用している完全なコードです。スパンタグをクリックすると、内側が隠されてほしい<ul>。私はthisliの代わりにspanの要素parent()lichildren()ulにアクセスすると仮定しましたが、そうではありません。私はここで何らかの愚かな間違いをしていますか?

TIA。

答えて

1

をお試しください:

$(this).parents('li').find('ul').hide(); 

はまた、私はより効果のためにこれをお勧め:

$(this).parents('li').find('ul').slideUp(); 

あなたのUL要素は、彼らの両方が所属李の子供たちだ、あなたのスパンやあなたのアンカーの子供ではありません。これまでトラバースして、すべてのulを隠すことは、私が信じた後のあなたのものです。

2

スパンをクリックすると、スパムの親(a)が取得され、ulの子が検索されます。

別のレベルに上がる必要があります。

+0

)(非表示;'それはあなたがそれを行う方法だと仮定すると、どちらか動作するようには思えません。それは子供を「ul」フラッシュするが、隠されていない。 –

-1

「this」はDOM要素を表します。あなたは$(this)のjQueryラッパーが必要です。 (:両親(「セレクタ」)、試合までの祖先を登っていない、それ以上.parent()親()...推測。注)あなたは親に直接移動して、これを短縮することができます

$(this).parent().children('ul').hide(); 
+0

申し訳ありませんが、コピーしたときにエラーが発生しました。固定されていても動作しません。 –

1

矢印をクリックするだけで(矢印をクリックすることで、意図的に意図していると思われますが)、<ul>、FF3.0.12、Ubuntu 8.04を隠します。なんらかの理由でそれは不必要に複雑に思われます。 。。 `$(この).parent()親()子ども( 'UL')を使用して

<script type="text/javascript"> 
    if ($) { 
     $(document).ready(

      function() { 

       $('ul li span').click(

        function() { 

          $(this).parent().parent().children('ul').hide(); // Original (modified) technique 

// Nick's technique: $(this).parents('li').find('ul').hide(); 
// My preferred technique: $(this).parents('li').find('ul').toggle(); 
         } 

       ); 

      } 

     ); 
    } 
</script> 
関連する問題