2010-06-01 66 views
2

我有一個ul設置爲導航,我將在懸停時進行動畫處理。由於所有的導航項目都是不同的寬度,因此我會將它們的默認寬度存儲在數組中,以便在懸停時將這些寬度傳回給動畫方法。jQuery發現'n-child'值

我需要的是一種方法來找到什麼'nth-child'元素是爲了從數組中檢索正確的寬度。

喜歡的東西:

var count = $(this).count(); //obviously this isn't right! 

這樣那麼我可以這樣做:

$(this).animate({'width':array(count)}, 400); 

任何建議將幫助我很多 - 如果有一個更好的方式做這種事情我d欣然接受指針!

+0

'nth-child'??或者你真的是最後一個孩子? – Reigel 2010-06-01 09:47:46

回答

5

我認爲index是你在找什麼。它告訴你一個元素與其同胞的相對位置,例如,父元素中的第二個元素是索引1.你可以使用選擇器,所以你只考慮某些同胞而不是其他人等。

+1

就是那個;) 我以前也用過這個;傻我! With index()我能夠做到這樣的事情: alert('Index:'+ $('ul#nav li a')。index($(this))); – Rich 2010-06-01 10:18:11

1

如果你真的想存儲最後寬度,在每個<裏使用.data()>

類似

$('ul li').css('width', function(i,v){ 
    $(this).data('lastWidth',v); 
    return v; 
}) 

然後類似,

$('li').animate({'width': $(this).data('lastWidth') }, 400); 

這是一個粗略的例子,但我想它比陣列更好......這樣,你肯定各< LI>的控股權值....

0

HTML這樣

<ul id="ul"> 
    <li style="width: 50px;">1</li> 
    <li style="width: 75px;">2</li> 
    <li style="width: 100px;">3</li> 
</ul> 

和這樣的腳本

$(function(){ 

    arrayOfWidth = []; 
    liItems = $('#ul li'); 
    someLi = $('#ul li:eq(1)'); // just for example 

    liItems.each(function(index, domElement){ 
     var $this = $(domElement); 
     arrayOfWidth.push($this.width()); 
    }); 

    alert(getWidth(someLi)); 

}); 

function getWidth(li){ 
    var index = liItems.index(li); 
    return arrayOfWidth[index]; 
}