2011-12-27 104 views
2

我已經創建了一個動態listviewid="a"的鏈接。如何獲得在ListView中選擇的元素的索引JQUERYMOBILE

<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索引號。

請幫我解決這個問題。

感謝 希亞姆

回答

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屬性後注意去除雙引號):

​​

我上面的示例將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()(來自早期版本)。

這裏有一些文檔爲雅,以幫助解釋上面的例子:

+0

海,感謝您的解決方案,但這不能解決我的問題,因爲我的頁面是動態生成的。每個頁面中我都有一個列表視圖在該列表中,如果我點擊任何東西,然後它應該加載第二頁,因爲我在這裏使用changePage()它是通向第二頁(但不是加載),我再次填充第二頁的數據。您的示例代碼段對靜態列表有效,但對於動態加載的動態列表不起作用。 – shyamshyre 2011-12-28 08:55:23

+0

Hai Jasper,早些時候我用每次調用不同的html頁面使用更改頁面($ .mobile.changePage(「aacp.html」,「slideup」);)在這種情況下,它不工作現在我已經取代了所有的代碼並保存在單個文件現在這是工作。你能不能讓我知道爲什麼它不爲差異文件準備好的原因,儘管我不打電話給外部。 – shyamshyre 2011-12-28 09:26:54

相關問題