查找数组元素的索引

时间:2013-04-04 01:03:00

标签: jquery jquery-mobile

我有一个元素数组,我想得到被点击的元素的索引,但是在我的代码中我一直保持相同的值。即使通过firebug我可以看到所有元素都在数组中。我的代码在

之下

ajax调用的回调如下:

function featuredtrackscallback(rtndata) 
{ 
//$('#pagetitle').html("New Articles");
var data="";
for(j=0;j<=rtndata.length -1;j++)
{
    links[j] = "<li><a href='./player.html?id="+rtndata[j].track_id+"' data-transition='slide' id="+rtndata[j].track_name+"><h3>" + rtndata[j].track_name + "</h3><p><strong>" + rtndata[j].artist_name + "</strong></p><p>" + rtndata[j].genre_name + "</p></a></li>";
    $('#featurelist').append(links[j]);
}
$('#featurelist').listview('refresh'); 
}

在ajax调用的.done部分中,我正在使用此函数

.done(function(){ 

        $('li').on('click', 'a', function () {
            alert(links.indexOf(this.li));

        }); 

当我点击链接时,我只得到值-1,这是不可能的。如何获取用户单击的列表视图中链接的索引值?

3 个答案:

答案 0 :(得分:0)

听起来你可能正在寻找index()方法。

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

您可能还需要parent()方法。

答案 1 :(得分:0)

我认为最大的问题是你正在尝试将DOM元素与字符串匹配。这不会像编写脚本那样起作用。

完成此项工作需要两个修复程序。

第一个是获取DOM元素并获取它的字符串版本:

  $('li').on('click', 'a', function () {
     var match_string = $(this).parent().clone().wrap('<li/>').parent().html();
     alert( links.indexOf( match_string ) );
  });

第二个要求更改设置<li>数组时使用的引号。放入字符串格式的DOM元素在其属性值周围使用双引号,并且两个字符串必须完全匹配 才能使其生效。

links[j] = '<li><a href="./player.html?id='+rtndata[j].track_id+'" data-transition="slide" id="'+rtndata[j].track_name+'"><h3>'+rtndata[j].track_name+'</h3><p><strong>'+rtndata[j].artist_name+'</strong></p><p>'+rtndata[j].genre_name+'</p></a></li>';

Proof of solution

答案 2 :(得分:0)

此代码似乎可以正常工作

.done(function(){ 
        $('ul').children('li').on('click', function () {
        var selected_index = $(this).index();
        alert('Selected Index = ' + selected_index);
    });

然而,如何使用此索引来获取索引中的值,例如href和id