Jquery 查找数组元素的索引

Jquery 查找数组元素的索引,jquery,jquery-mobile,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&

我有一个元素数组,我想得到被点击元素的索引,但是在我的代码中,我一直得到相同的值。尽管通过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'); 
}

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

听起来您可能在寻找index()方法


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

我认为最大的问题是您试图将DOM元素与字符串匹配。这与您编写脚本的方式不一样

要使此功能正常工作,需要两个修复程序

首先是获取该DOM元素并获取其字符串版本:

  $('li').on('click', 'a', function () {
     var match_string = $(this).parent().clone().wrap('<li/>').parent().html();
     alert( links.indexOf( match_string ) );
  });
$('li')。在('click','a',函数(){
var match_string=$(this.parent().clone().wrap(“
  • ”).parent().html(); 警报(links.indexOf(匹配字符串)); });
  • 第二个要求更改设置
  • 数组时使用的引号。放入字符串格式的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>';
    
    链接[j]='
  • ';

    此代码似乎工作准确

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

    但是,如何使用此索引获取索引中的值,如href和id

    这看起来不是一个好方法。你想做什么?可能
    这个.li
    未定义的
    ,因为通常在任何HTML元素上都没有这样的属性。即使你让它工作起来,也有一个明显的问题。
    链接
    中的索引等于
    rtnda
    中的索引,它不一定是其
    • 元素的索引。这是因为附加LIs时没有首先清除
      ,因此以前附加的LIs仍然存在。如果我理解正确,那么您可以使用jQuery的
      .index()
      \featurelist
      中查找单击链接的父级
    • 的索引。这似乎是您想要的,但不清楚原因。检查聊天,告诉我您到底需要什么。@Beetroot Beetroot当我检查firebug中的链接数组时,它看起来很好,如
      rtnda[j]。track_id
      是数据库表中的一个值。
      .done(function(){ 
              $('ul').children('li').on('click', function () {
              var selected_index = $(this).index();
              alert('Selected Index = ' + selected_index);
          });