JQuery:首先不选择第一个,但第二个

时间:2018-05-02 07:03:11

标签: javascript jquery html ajax selector

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

我实际上想解析并从 AJAX 调用中收到的html内容中获取所有细节。

HTML页面共包含3个 div ,每个都有一个" .head ",其中包含内容第一个 div 是我想要获取的歌曲的标题。因此,我尝试使用JQuery的:first 选择器:$(PAGE).find("div.class:first").text();其中 PAGE 是已解析的HTML对象。

它的作用是不是选择实际的第一个div,而是选择带有 head 类的第二个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.log( MSG );
}

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

以下是 AJAX调用

期间收到的 HTMLcontent
Cannot Paste the whole content in here

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

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

这是执行时代码的输出。

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

文字" 选择格式:"是具有 head 类的第二个div的内容。

您可以清楚地看到第一个带有" head "是包含歌曲标题的那个。

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

为什么:第一个选择器选择第二个 div

我该怎么办?请帮忙!!

2 个答案:

答案 0 :(得分:0)

你必须使用first()

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

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

答案 1 :(得分:0)

首先,您需要清理HTML

为什么在HTML标记之外有HEAD标记?

此外,你不应该将身体内容放在头部。

试试这个:

$ticket = $this->Ticket->find('first', array('conditions' => array('AND' => array('Ticket.TRV_No' => $trv_no)));
    if(empty($ticket))
    {
        $table_name = 'Ticket_L0';
        $this->Ticket->setSource($table_name);
        //$ticket = $this->Ticket->find('first', array('conditions' => array('Ticket.TRV_No' => $trv_no)));
        $ticket = $this->Ticket->find('first', array('conditions' => array('AND' => array('Ticket.TRV_No' => $trv_no, 'Ticket.HIDDEN_STAT LIKE' =>'0'))));
        if(empty($ticket)) { return false; } else { return true; }
    }
    else
    { return true; }
}