JQuery :first 不是 select 第一,而是第二

JQuery :first does not select first, but second

我有一个 JQuery 脚本,它使用 AJAX 向以下包含信息的 url https://djjohal.video/video/671/index.html#gsc.tab=0 发送请求视频歌曲。

我实际上想从我在 AJAX 调用中收到的 html 内容中解析和获取所有详细信息。

HTML页面总共包含3个div的,每个都有一个class“.head ”,其中第一个div的内容是我要抓取的歌名。因此,为此我尝试使用 JQuery 的 :first 选择器,如下所示: $(PAGE).find("div.class:first").text(); 其中 PAGE 是已解析的 HTML object.

它所做的是,它不是选择实际的第一个 div,而是选择第二个 div 和 head class包含无用信息。

这是我的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();
});

这里是HTML内容AJAX调用

期间收到
Cannot Paste the whole content in here

如果支持,您可以通过此link查看内容。

view-source:https://djjohal.video/video/671/index.html#gsc.tab=0

这里是代码执行时的输出。

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

其中文本“Select格式:”是第二个div的内容,head class.

您可以清楚地看到带有 class “head” 的第一个 div 标签是包含歌曲标题的标签。

但是为什么JQuery看不到这个??

为什么 :first 选择器选择第二个 div.

我该怎么办??请帮忙!!

你必须使用 first()

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

更多信息:https://api.jquery.com/first/

首先你需要清理你的HTML

为什么在 HTML 标签之外有一个 HEAD 标签?

此外,您不应该将正文内容放在头部部分。

试试这个:

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