JQuery: первый выбирает не первый, а второй - PullRequest
0 голосов
/ 02 мая 2018

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

Я действительно хочу проанализировать и извлечь все подробности из html-контента, который я получил в вызове AJAX .

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

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

Вот мой код 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.log( 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 с классом head .

Вы можете ясно видеть, что первый тег div с классом " head " является тегом, содержащим название песни.

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

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

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

Ответы [ 2 ]

0 голосов
/ 02 мая 2018

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

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

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

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

$.ajax({
    url : url,
    success : function(data){
        var responseHtml = $.parseHTML(data);
        songTitle = $.trim(
                $(responseHtml).filter('div.head:first').text());
        alert(songTitle);
    }
});
0 голосов
/ 02 мая 2018

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

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

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

...