#jquery #jquery-mobile #jquery-mobile-listview
#jquery #jquery-мобильный #jquery-mobile-listview
Вопрос:
я попытался получить идентификатор выбранного элемента мобильного списка jquery:
<div data-role="main" id="immals">
<ul data-role="listview" class="immj ui-listview" id="imj">
<li class="ui-first-child"><a href="#stdjg" id="test">TEST</a></li>
<li class=""><a href="#stdjg11" >11</a></li>
<li class=""><a href="#stdjg12" >12</a></li>
<li class="ui-last-child"><a href="#stdjg13">13</a></li></ul>
</div>
$(document).ready(function(data) {
$('#imj li').click(function(){
alert($(this).attr('itemid'));
});
});
Но я всегда получаю «неопределенный»
Комментарии:
1. Вы не объявляете никаких атрибутов по имени
itemid
в своем HTML.2. И ни один из
li
элементов (которые будутthis
в коде) также не имеет никакогоid
набора.3. jQuery Mobile не использует DOM ready ; есть несколько других событий, которые вы можете использовать. Сказав это, вы хотите получить содержимое или идентификатор выбранного элемента. Имейте в виду, что jQuery Mobile изменяет вашу разметку, поэтому, если вы пытаетесь получить содержимое, приготовьтесь — вы получите больше, чем просили.
Ответ №1:
у вас $('#imj li')
нет такого атрибута itemid, для извлечения содержимого используйте .html()
$(document).ready(function(data) {
$('#imj li').click(function(){
alert($(this).html())
});
});
Комментарии:
1. @War10ck lol в тот момент, когда я прочитал это, я увидел в заголовке вопроса, что он хочет получить содержимое.- какой плохо сформулированный и подготовленный вопрос
Ответ №2:
Такого атрибута, для которого можно было бы найти значение, не существует
$('#imj li').click(function() { // click on list item for ul of id imj
alert($(this).attr('itemid')); // get the list item's attribute itemid
});
Авария! В вашей HTML-разметке такого атрибута нет, jQuery не смог выполнить запрос, и вы будете чесать голову, почему, почему, почему jQuery почему! Но это не сработает. Здесь вам нужно понять код jQuery.
Вы получите значение атрибута атрибута (строковое имя которого), которое вы фактически передаете методу. Затем это значение будет использоваться в качестве string
переменной, подлежащей оповещению.
Это может помочь вам. Просто пример, обратите внимание, что нет такого атрибута, как itemid
.
<li itemid="something">List Item content</li>
Тогда код будет работать. В противном случае он не будет работать так, как вы хотите, чтобы он работал.
Что вы должны попробовать, было бы так
<li id="itemid1">Item id is 1!</li>
Комментарии:
1. Нет такого атрибута, как
itemid
. Вы должны использовать допустимый атрибут likeid
или создать пользовательскийdata-*
атрибут likedata-itemid
…2. ах, моя вина, я пишу itemit после <li>, а не в <li>
3. @War10ck Я это знаю. 🙂 Я просто пыталась быть с ним непринужденной. Больше ничего, однако я добавил и эту часть примера.
4. Еще один вопрос: функция: $(‘#imj li’).click(функция () работает только с предопределенными элементами списка, динамическое добавление не работает.. Код для этого: $(«#immals ul»).append(«<li itemid=» data.jahr[i] «><a href=#stdjg>» data.jahr[i] «</a></li>»); Так что же не так?
5. @user3772619 Вам нужно будет использовать делегирование событий с
.on()
или.delegate()
в зависимости от вашей версии jQuery…