2009-08-11 4 views
6

私は小さなメニューでjqueryの問題を抱えています。メニュー項目のリストがあります。リストアイテムの1つにカーソルを合わせると、リストアイテムと同じインデックスを共有するdivのリストからコンテンツを表示したいと思います。これは動的である必要がありますが、メニュー項目とコンテンツ項目はいくつでも許可されます。jquery index() - ホバーリストアイテム、同じインデックスのコンテンツを表示

$(document).ready(function() { 
    $("#leftnav li").each(function(){ 
     $(this).mouseover(function() { 
      //SHOW div that shares same index as this li 
     }); 
     $(this).mouseout(function() { 
      //HIDE div that shares same index as this li 
     }); 
    }); 
}); 

<ul id="leftnav"> 
    <li>Link 1</li> 
    <li>Link 2</li> 
</ul> 

<div id="content"> 
    <div>Content 1</div> 
    <div>Content 2</div> 
</div> 

答えて

11

は、私はおそらくこれを簡素化するためにhover()メソッドを使用したい(または急速なマウスの動きの問題のような他のいくつかの問題を解決しhoverIntentプラグインを、) 。

$(function() { 
    $('#leftnav li').hover(
      function() { 
       var idx = $('#leftnav li').index(this); 
       $('#content div').eq(idx).show(); 
      }, 
      function() { 
       var idx = $('#leftnav li').index(this); 
       $('#content div').eq(idx).hide(); 
      } 
     }): 
}); 
+0

良い解決策。私の答えよりもかなりかわいい:) – dcharles

2

これはトリックを行う必要があります。

$(function() { 
     $('#leftnav li').mouseover(function() { 
      var index = $('#leftnav li').index($(this)); 
      $('#content').find('div:eq(' + index + ')').show(); 
     }).mouseout(function() { 
      var index = $('#leftnav li').index($(this)); 
      $('#content').find('div:eq(' + index + ')').hide(); 
     }); 
    }); 
1

prevAll().lengthを使用する。 .indexよりずっと良い。

関連する問題