如何获取在ListView JQUERYMOBILE中选择的元素的索引

时间:2011-12-27 11:59:40

标签: jquery-mobile

我创建了一个动态listview,其中包含id="a"的链接。

<ul id="accpmenu" data-role="listview" >
</ul>

$("#accpmenu").append('<li><a href='+ "#" + ' id="a" ">'+ this.textContent +'</a>  </li>');

现在我想确定我从这个listview点击的元素的索引。

$("#a").live("click",function(e)
{
    //What should i write here to get the selected index?.
}

我希望基于此的索引号我需要加载动态XML。

请帮我解决这个问题。

由于 希亚姆

1 个答案:

答案 0 :(得分:7)

$('#accpmenu').on('click', ' > li', function () {
    var selected_index = $(this).index();
});

以下是演示:http://jsfiddle.net/w2JZU/

这会将事件处理程序绑定到#accpmenu列表中的click列表中的列表项,以查找所单击列表项的索引(与其他列表项元素比较)。

在旁注中,您的代码中有一些似乎无效的HTML:

$("#accpmenu").append('<li><a href='+ "#" + ' id="a" ">'+ this.textContent +'</a>  </li>');

应该更改为(注意id属性后删除的双引号):

$("#accpmenu").append('<li><a href='+ "#" + ' id="a">'+ this.textContent +'</a>  </li>');

上面的示例将click事件处理程序添加到li元素,因为很容易确定被点击元素的索引,但您也可以绑定到列表中的链接:

$('#accpmenu').on('click', 'a', function () {

    //this gets the index by finding the first parent list-item element and getting it's index compared do its siblings
    var selected_index = $(this).parents('li').eq(0).index();
});

请注意,.on()是jQuery 1.7中的新增功能,在上述情况下,替换.delegate()(来自早期版本)。

以下是一些有助于解释上述示例的文档: