2012-06-18 28 views
0

我此的控制範圍:http://jsfiddle.net/ZP76c/jQuery的index()函數

我試圖以控制jQuery的選擇元素)的範圍根據其離指數(,可能嗎?

<div class="holder"> 
    <div class="first">First</div> 
    <div class="second">Second</div> 
    <div class="first">First</div> 
    <div class="second">Second</div> 
</div>​ 

$('.holder div').click(function(){ 
    alert($(this).index());    
}); 

// desired behaviour: clicking the first 'first' div will alert: "0" 
// clicking the second 'first' div, will alert: "1" 
// so it takes the divs with a class of 'second' out of the index() calculation 
// possible with jQuery .index()? 
​ 

回答

1

下應該滿足您的需求:

$('.holder div.first').click(function() { 
    alert($(this).index(".first"));    
}); 

或者一個更通用的解決方案(所以.second不相同):

$('.holder div').click(function() { 
    alert($(this).index("." + $(this).prop("class")));    
}); 

這僅適用不過,如果每個格只有一個班級,班級爲「first/second/third」等。

而如果您的div有幾類,你可以添加,而不是一個數據屬性,然後做類似如下:

$('.holder div').click(function() { 
    alert($(this).index("[data-category=" + $(this).attr("data-category") + "]"));    
}); 

和HTML:

<div class="holder"> 
    <div class="first" data-category="first">First</div> 
    <div class="second class-does-not-matter" data-category="second">Second</div> 
    <div class="first another-div-class" data-category="first">First</div> 
    <div class="second div-class" data-category="second">Second</div> 
</div>​​​​​​​​​​​​​​​​​​ 

data-category設置無論它是哪個類別的成員。

0

您可以將要計算索引的選擇器傳遞給.index()。例如:在你的情況下,alert($(this).index('div.first'));