Здравствуйте, у меня есть UL и LI, он работает с функциональным щелчком, но если получить заголовок, он не сработает.
Пример:
// it work but not get title
$("#list li").on('click', function() {
var get_id = $(this).attr('id');
var get_title = ///??? how to get title h2 selector
//alert(get_id);
console.info($(this).text());
});<script src = "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/core.js"></script>
<ul id = "list">
<li id = "myID">
<h2>Title</h2> First One </li>
<li id = "myID2">
<h2>Title 2</h2> Two </li>
<li id = "myID4">
<h3>Title 3</h3> Tree </li>
</ul>И какой выход вы хотите? Title,Title 2,Title 3 или First One,Two,Tree?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вам нужно выбрать элемент h2, а затем получить текст с помощью text(), например:
var get_title = $(this).find('h2').text();
Как предложил @ParthShah, вы можете использовать глобальный класс, например title_content, в ваших элементах заголовка, чтобы вы могли легко настроить его с помощью селектора классов:
var get_title = $(this).find('.title_content').text();
$("#list li").on('click', function() {
var get_id = $(this).attr('id');
var get_title = $(this).find('.title_content').text();
console.info(get_id + ' - ' + get_title);
});<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id = "list">
<li id = "myID"><h2 class = "title_content">Title</h2> First One </li>
<li id = "myID2"><h2 class = "title_content">Title 2</h2> Two </li>
<li id = "myID4"><h3 class = "title_content">Title 3</h3> Tree </li>
</ul>А как насчет h3?
присвойте классу "title_content" тегам h2 и h3, а затем выберите заголовок по имени класса.
Просто используйте children ()
Общие классы более эффективны, если у них есть вложенная структура, при использовании children() его будет не хватать ...
используйте jQuery find для запроса внутри вашего элемента.
var get_title = $(this).find("h2,h3").text() //add h4,h5 etc if you need to find those too.
https://jsfiddle.net/povu503s/
$(this).children().html();
Возьмем первого ребенка и возьмем HTML внутри
Используйте :header. Не нужно беспокоиться ни о каком теге h1,h2,h3....
$("#list li").on('click', function() {
var get_id = $(this).attr('id');
var get_title = $(this).find(":header").text();
console.info(get_title);
});<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id = "list">
<li id = "myID">
<h2>Title</h2> First One </li>
<li id = "myID2">
<h2>Title 2</h2> Two </li>
<li id = "myID4">
<h3>Title 3</h3> Tree </li>
</ul>
</div>Название является дочерним по отношению к вашему целевому li. Используйте функцию .children() для нацеливания на этот заголовок.
Надеюсь, это поможет:>
// it work but not get title
$("#list li").on('click',function(){
var get_id = $(this).attr('id');
var get_title = $(this).children().text();
alert(get_title)
});<script src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id = "list" >
<li id = "myID" > <h2>Title</h2> First One </li>
<li id = "myID2" > <h2>Title 2</h2> Two </li>
<li id = "myID4" > <h3>Title 3</h3> Tree </li>
</ul>присвойте тегам h2 и h3 такой класс, как "title_content", а затем выберите заголовок по имени класса.
$("#list li").on('click', function() {
var get_id = $(this).attr('id');
var get_title = $(".title_content", this).text();
console.info(get_id + ' - ' + get_title);
});
См. Ниже Fiddle ..
Вы можете использовать любой из нижеприведенных
1. var get_title = $(this).find(':header').text();
2. var get_title = $(this).children().text();
Ни у одного из элементов нет атрибута
title? Вы имеете в видуtext()?