2011-03-14 115 views
0

嗨,我有这段代码。我需要获得点击元素的基于0的索引。获取点击元素的索引

这是我的代码。我总是得到-1作为索引。 理想情况下,单击第一个链接将打印0,第二个打印1. 我正在使用jquery 1.3.2。 JavaScript代码也很好。

我缺少什么?

<script type="text/javascript"> 
function handleClick(id) {   
     var par = document.getElementById('par'+id);   
     alert('Index= ' + $('#clips').index(par)); 
     } 
</script> 

<div id="clips" style="clear:both">             
     <div id="par30" class="alb rc32"> 
      <div class="fl rc32 thm"> 
       <a id="30" onclick="handleClick(30);">Link 1</a> 
      </div> 
     </div> 
     <div id="par40" class="alb rc32"> 
      <div class="fl rc32 thm"> 
       <a id="40" onclick="handleClick(40);">Link 2</a> 
      </div> 
     </div> 
     <div id="par50" class="alb rc32"> 
      <div class="fl rc32 thm"> 
       <a id="50" onclick="handleClick(50);">Link 3</a> 
      </div> 
     </div>           
     </div> 

回答

0

您正在使用的索引功能失常。

尝试

<script type="text/javascript"> 
function handleClick(id) {   
     var par = document.getElementById('par'+id);   
     alert('Index= ' + $('#clips > div').index(par)); 
     } 
</script> 

看到http://api.jquery.com/index/

如果的.index()被调用上的元件的集合和 DOM元素或 jQuery对象中传递,的.index() 返回一个整数,指示传递元素 相对于原始集合的 位置。

+0

有时很难成为第一个答案!我将使用'#clips'的选择器更改为'#clips> div',然后使用该集合传入要索引的特定对象来调用index。 Rob博士的回答也很好。 :) – Sam 2011-03-14 21:33:54

+0

我看到了错误。谢谢。 – kheya 2011-03-14 21:41:33

1

这工作:

<script type="text/javascript"> 
    function handleClick(id) { 
     var $par = $('#par' + id); 
     alert($par.index()); 
    } 

<div id="clips" style="clear:both">             
    <div id="par30" class="alb rc32"> 
     <div class="fl rc32 thm"> 
      <a href="javascript:void(0);" id="30" onclick="handleClick(30);">Link 1</a> 
     </div> 
    </div> 
    <div id="par40" class="alb rc32"> 
     <div class="fl rc32 thm"> 
      <a href="javascript:void(0);" id="40" onclick="handleClick(40);">Link 2</a> 
     </div> 
    </div> 
    <div id="par50" class="alb rc32"> 
     <div class="fl rc32 thm"> 
      <a href="javascript:void(0);" id="50" onclick="handleClick(50);">Link 3</a> 
     </div> 
    </div>           
    </div> 
+1

你对我来说太快了。 :)当谈到快速回答问题时,这个网站看起来很有竞争力!虽然这很好。 – Sam 2011-03-14 21:37:12

+0

大声笑 - 谢谢 - 请您将其标记为答案,如果它是正确的。 – Rob 2011-03-14 21:38:05

+0

这可能适用于更高版本的jquery,而不是1.3 – kheya 2011-03-14 21:41:08