我创建了一个动态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。
请帮我解决这个问题。
由于 希亚姆
答案 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()
(来自早期版本)。
以下是一些有助于解释上述示例的文档:
.on()
:http://api.jquery.com/on .index()
:http://api.jquery.com/index .parents()
:http://api.jquery.com/parents