ОК, поэтому я создаю мобильное приложение, использующее jQuery mobile, и у меня есть динамически созданная кнопка, которая создается, когда пользователь ищет контакт. когда пользователь находит совпадение для своего найденного контакта, имя отображается в динамически создаваемом теге. результаты могут возвращать дубликаты, если существует более одного человека с тем же именем. с кодом, который у меня есть, если я нажму кнопку, я просто хочу, чтобы он предупредил меня о том, что указано в приведенной выше кнопке. он отлично работает, если нет дубликатов, тогда он оповещает все имена, потому что все кнопки имеют один и тот же класс.
вот цикл, который создает и кнопки:
for (var i=0; i<contacts.length; i++) {
$('#srchResults').append("<div id='resultdiv"+i+"' data-role='collapsible'><h3 id = 'nameh3"+i+"'>"+contacts[i].name.formatted+"</h3>"+"<p>"+'<a href="#" data-role="button" data-icon="plus" data-iconpos="notext" data-theme="c" data-inline="true" class="btnDisguise">'+'Plus'+'</a>'+'<a href="#" data-role="button" data-icon="info" data-iconpos="notext" data-theme="c" data-inline="true" class="btnInfo">'+'Info'+'</a>'+"</p></div>").trigger('create');
}
и здесь функция.btnInfo после щелчка:
$(document.body).on('click', '.btnInfo', function() {
var $this = $(this),
h3text = $this.parents().find("h3").text();
alert(h3text);
});
мне нужно найти способ просто предупредить, что кнопка связана, любая помощь очень ценится, спасибо.
Добавьте атрибут класса в resultdiv
затем используйте .closest()
чтобы найти resultdiv
к которому принадлежит resultdiv
кнопка, затем h3
внутри него
for (var i = 0; i < contacts.length; i++) {
$('#srchResults').append("<div id='resultdiv" + i + "' class='resultdiv' data-role='collapsible'><h3 id = 'nameh3" + i + "'>" + contacts[i].name.formatted + "</h3>" + "<p>" + '<a href="#" data-role="button" data-icon="plus" data-iconpos="notext" data-theme="c" data-inline="true" class="btnDisguise">' + 'Plus' + '</a>' + '<a href="#" data-role="button" data-icon="info" data-iconpos="notext" data-theme="c" data-inline="true" class="btnInfo">' + 'Info' + '</a>' + "</p></div>").trigger('create');
}
тогда
$(document.body).on('click', '.btnInfo', function () {
var $this = $(this),
h3text = $this.closest('.resultdiv').find("h3").text();
alert(h3text);
});
Демо: скрипка
var $this = $(this),
должно заканчиваться на;
h3text
отступом ниже$this
).