2011-02-03 50 views
0

有5个li元素,其中一个说第三个li隐藏。有没有办法在获取索引之前应用filter,以便第四个元素的索引应该显示2而不是3获取当前徘徊的li的索引只能看到li - jquery hover

<html> 
    <head> 
     <title>test</title> 
     <script type='text/javascript' src='js/jquery-1.4.2.js'></script> 
     <script> 
      $(window).load(function() { 
        jQuery('.addchar').live('hover', function(event) { 
         $("#result").html("Index is:" +$(this).index()); 
        }); 
       }); 
      }); 
     </script> 
    </head> 
    <body> 
     <div id="content"> 
      <div> 
       <ul> 
        <li class="addchar">one </li> 
        <li class="addchar">two </li> 
        <li class="addchar" style="display:none"> three</li> 
        <li class="addchar">four </li> 
        <li class="addchar">five </li> 
       </ul> 
      </div> 
      <div id="result"></div> 
     </div> 
    </body> 
</html> 

回答

2

如何使用visible selector

$('.addchar:visible').live(... 

编辑:

太糟糕了,你可以尝试另一种方法是,如果是一个选择:

$(function() { 
    $('.addchar:visible').each(function(index) { 
     $(this).hover(function() { 
      $("#result").html("Index is: " + index); 
     }); 
    }); 
}); 
+0

我试过你的建议,但结果相同。是否有可能获得隐藏在0和当前悬停元素索引之间的元素总数。如果是,那么可以计算指数。 – kiranking 2011-02-03 17:01:25

0

由于方法的foreach迭代每一个元素时,元件尺寸rises.I搜索,得到它working.Thanks这个link它变得缓慢。

jQuery('.addchar').live('hover', function (event) { 
var cInd = $(this).index();//current index including hidden element 
var hidLen = $(this).parent().children("li:lt(" + cInd + "):not(:visible)").length;//total hidden before hovered element 
var index = cInd - hidLen; 
$("#result").html("Current index :" + cInd +"<br>Tot Hidden Before Current:" + hidLen+"<br> Actual Index:"+index); 
});