2012-12-28 70 views
1

我有一个列表DIV的是一个容器DIV类似于下面。获取div内的订单div

<div id="ChainLinkList"> 
    <div class="chainSelect" id="L2176">jj</div> 
    <div class="chainSelect" id="L2171">suby 3</div> 
    <div class="chainSelect" id="L2170">suby 2</div> 
    <div class="chainSelect" id="L2167">submenu</div> 
    </div> 

我想单击时获得特定DIV的订单。我曾尝试以下

$(".chainSelect").live("click", function() { 
    var index = $(this).parent().index(".chainSelect"); 
    alert(index); 
    ..... 

$(".chainSelect").live("click", function() { 
    var index = $('#ChainLinkList').parent().index(".chainSelect"); 
    alert(index); 
    ..... 

但我只是似乎得到-1

回答

6

您只需拨打$(this).index();获得点击项目的索引里面它的父:

$(".chainSelect").live("click", function() { 
    var index = $(this).index(); 
    alert(index); 
});​ 

http://jsfiddle.net/5ShLs/

0

首先..

$('#ChainLinkList').parent() 

在此您所呼叫的div chainlinklist的父母,在这里它的自我是你需要elemnt格的父母..所以这不会为你做。
因此试试这个..

$(this).index(); 
0

没有必要去父母..只是让你点击的元素的索引..

在jQuery 1.7中,.live()方法已经过时了。

$(".chainSelect").on("click", function() { 
    var index = $(this).index(); 
    alert(index); 
});​ 
1

你可以试试这个:

.live已被弃用,因此最好使用.on()处理

$(document).on("click", ".chainSelect", function(){ 
    var index = $(this).index(); 
    alert(index); 
}); 
+0

+1注意到'live'; -1作为'e.target'并不是一个好建议,但它具有不同的含义。 (总共:0我) –

+0

好吧!但没有得到它为什么e.target不是一个好建议?热衷于学习更多。 – Jai

+0

'e.target'可以返回目标元素的子元素;这个孩子在_its_ parent中的位置与this不同。 'e.target'与绑定元素或委托元素无关。 –

1

你应该改变

$(".chainSelect").live("click", function() { 
    var index = $(this).parent().index(".chainSelect"); 
    alert(index); 
}); 

为:

$(".chainSelect").live("click", function() { 
    var index = $(".chainSelect").index(this); 
    alert(index); 
});​ 

fiddle