2010-01-25 29 views
3

我在這裏遇到問題,請幫助。我的要求是獲得點擊div的索引值。有2個列表,我需要調用函數doSomething();只有當用戶點擊第一個div集。無論如何,我可以實現它。獲得DIV指數值

的腳本和HTML是如下

$(document).ready(function() { 
$(".list-wrapper li").click(function() { 
    var index = $(".list-wrapper div").index(this); 
    alert(index); 
    }); 
}); 

<div class="list-wrapper"> 
<ul> 
<li>List 1</li> 
<li>List 2</li> 
<li>List 3</li> 
</ul> 
</div> 

<div class="list-wrapper"> 
<ul> 
<li>List 1</li> 
<li>List 2</li> 
<li>List 3</li> 
</ul> 
</div> 

請幫助...

回答

3

jQuery有強大selectors,所以通常不需要進行事後檢查索引。例如:

對於頁面上的第一個div:

$(".list-wrapper:first").click(doSomething); 

對於第一個<li> S IN每個列表:

$(".list-wrapper li:first-child").click(doSomething); 

如果你仍然想找到索引,則需要搜索點擊的li的父div。此外,選擇器.list-wrapper div爲空 - 您在list-wrapper中沒有任何div。這將工作:

var parent = $(this).closest('div') 
var index = $(".list-wrapper").index(parent); 
1

有很多方法可以做到這一點:

$('div.list-wrapper').first().click(function() { doSomething(); }); 

and

$("div.list-wrapper:first").click(function() { doSomething(); }); 

$('div.list-wrapper').eq(0).click(function() { doSomething(); }); 

都浮現在腦海中的第一人。達人提示,包括對速度的前級元素類型(div.blah比.blah更快)

或者僅僅拿到指標:

var index = $('div.list-wrapper').index(this); 

與父替換「這」的特異性

0

試試這個:

<ul><li id="foo">foo</li><li id="bar">bar</li><li id="baz">baz</li></ul> 


var listItem = document.getElementById('bar'); 
alert('Index: ' + $('li').index(listItem)); 

更多信息請參閱本: http://api.jquery.com/index/