首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jquery索引找不到元素(-1)错误输入(使用live函数)

问Jquery索引找不到元素(-1)错误输入(使用live函数)
EN

Stack Overflow用户
提问于 2011-07-01 04:40:47
回答 2查看 922关注 0票数 1

我喜欢获取li元素的索引。li元素是在页面加载后创建的。Jquery返回-1 not found错误。

结构html (在dom中找到,而不是在页面源代码中):

代码语言:javascript
复制
<div id="warp-expand">
  <ul>
   <li><div class="song"><div class="list_b"></div><a>test1</a></div></li>
   <li><div class="song"><div class="list_b"></div><a>test2</a></div></li>
  </ul>
</div>

Jquery来获取li索引:

代码语言:javascript
复制
 $("#warp-expand ul li a").live('click',function () {

    var x = $("warp-expand ul li").index(this);
    alert(x); //returns -1  

 });

li's是如何构成的:

代码语言:javascript
复制
 $("#playlister").click(function () {
    $("#jp_playlist_2 ul li").each(function()
    {
    var s = $(this).text();
    $('#warp-expand ul').append('<li><div class="song"><div class="list_b"></div><a>' +s+ '</a></div></li>');
    });

});
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-01 04:50:09

这就是了:

代码语言:javascript
复制
$('#warp-expand a').live('click',function () {    
    var idx = $(this).closest('li').index();    
});

现场演示: http://jsfiddle.net/Aphrq/1/

因此,正如您所看到的,在没有任何参数的情况下调用index()工作得很好。只需选择元素(在本例中为对应的LI元素)并对其调用index()即可。

另外,考虑在页面加载时缓存DOM元素引用:

代码语言:javascript
复制
// cache reference on page-load (do this for all your references)
var warp = $('#warp-expand');

// use delegate(), it's better!
warp.delegate('a', 'click', function() {
    var idx = $(this).closest('li').index();        
});

现场演示: http://jsfiddle.net/Aphrq/2/

票数 3
EN

Stack Overflow用户

发布于 2011-07-01 04:44:08

代码语言:javascript
复制
 $("#warp-expand ul li a ").live('click',function () {

    var x = $(this).closest('li').index();
    alert(x); 

 });

http://jsfiddle.net/5vGsE/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6540864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档