JQuery: first не выбирает первое, а второе

У меня есть сценарий JQuery, который отправляет запрос с использованием AJAX на следующий URL-адрес https://djjohal.video/video/671/index.html#gsc.tab=0, который содержит информацию о видео-песне.

На самом деле я хочу проанализировать и получить все подробности из содержимого html, которое я получил в вызове AJAX.

HTML-страница содержит всего 3 div's, каждый из которых имеет класс «.глава», и среди них содержимое первого div - это название песни, которую я хочу получить. Поэтому для этого я попытался использовать селектор :первый JQuery следующим образом: $(PAGE).find("div.class:first").text();, где СТРАНИЦА - это проанализированный объект HTML.

Что он делает, так это то, что вместо выбора фактического первого div он выбирает второй div с классом глава, который содержит бесполезную информацию.

Вот мой код JavaScript

function action(){
    let url = `https://djjohal.video/video/671/index.html#gsc.tab=0`;

    LOG_INFO( "REQUEST SENT..." );

    $.ajax({
        url : url,
        success : function(res){
            LOG_INFO( "DATA RECEIVED..." );
            let PAGE = $(res);
            LOG_INFO( $(PAGE).find("div.head:first").text() );
        }
    });
}

function LOG_INFO( MSG ){
    $("body").text( MSG );
    console.info( MSG );
}

$(document).ready(function(){
    action();
});

Вот HTMLcontent, полученный во время Вызов AJAX

Cannot Paste the whole content in here

Вы можете просмотреть содержимое по этой ссылке, если она поддерживается.

источник просмотра: https: //djjohal.video/video/671/index.html#gsc.tab=0

вот результат выполнения кода.

REQUEST SENT...
DATA RECEIVED...
Select Format :

Где текст «Выберите формат:» - это содержимое второго div с классом глава.

Вы можете ясно видеть, что первый тег div с классом «глава» - это тот, который содержит заголовок песни.

Но почему JQuery этого не видит ??

Почему: первый селектор выбирает второй div.

Что мне делать ?? Пожалуйста помоги!!

Можете попробовать $(PAGE).find('div.head').first()? Насколько я знаю, :first не работает.

Douwe de Haan 02.05.2018 09:06

HTML источника очень хорошо искажен. С divs в разделе HEAD и тд.

deEr. 02.05.2018 09:22

Пойдите для тега <title>. То же самое. Но придется редактировать text.

deEr. 02.05.2018 09:29

Еще лучше. Выберите <div class = "albumCover"> <img src = "http://djjohalhd.video/data/thumbs/671.jpg" alt = "Heathens - Twenty One Pilots ,…. altattribute из image.

deEr. 02.05.2018 09:38
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
112
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

вы должны использовать first()

 $(PAGE).find("div.head").first().text();

для получения дополнительной информации: https://api.jquery.com/first/

Ответ принят как подходящий

Сначала вам нужно очистить свой HTML

Почему у вас есть тег HEAD вне тегов HTML?

Также вы не должны помещать содержимое тела в раздел заголовка.

Попробуй это:

$.ajax({
    url : url,
    success : function(data){
        var responseHtml = $.parseHTML(data);
        songTitle = $.trim(
                $(responseHtml).filter('div.head:first').text());
        alert(songTitle);
    }
});

Вау !! Работал!!

Danish Nayeem 02.05.2018 11:37

Другие вопросы по теме