Вернуть текст только одного <h3> родительского тега

0

ОК, поэтому я создаю мобильное приложение, использующее 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);
    });

мне нужно найти способ просто предупредить, что кнопка связана, любая помощь очень ценится, спасибо.

  • 0
    опечатка? var $this = $(this), должно заканчиваться на ;
  • 0
    @ DrixsonOseña: Возможно, это опечатка, но она не является неграмотной (хотя в этом случае отступы, как правило, отличаются, с h3text отступом ниже $this ).
Показать ещё 3 комментария
Теги:
mobile

1 ответ

1
Лучший ответ

Добавьте атрибут класса в 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);
 });

Демо: скрипка

  • 0
    работал отлично, большое спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню