Как получить индекс элемента, выбранного в ListView JQUERYMOBILE - PullRequest
2 голосов
/ 27 декабря 2011

Я создал динамический 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.

Пожалуйста, помогите мне решить эту проблему.

Спасибо Shyam

1 Ответ

7 голосов
/ 28 декабря 2011
$('#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() (из более ранних версий).

Вот несколько документов, которые помогут вам объяснить приведенные выше примеры:

...