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();
首先你需要清理你的HTML
为什么在 HTML 标签之外有一个 HEAD 标签?
此外,您不应该将正文内容放在头部部分。
试试这个:
$.ajax({
url : url,
success : function(data){
var responseHtml = $.parseHTML(data);
songTitle = $.trim(
$(responseHtml).filter('div.head:first').text());
alert(songTitle);
}
});
我有一个 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();
首先你需要清理你的HTML
为什么在 HTML 标签之外有一个 HEAD 标签?
此外,您不应该将正文内容放在头部部分。
试试这个:
$.ajax({
url : url,
success : function(data){
var responseHtml = $.parseHTML(data);
songTitle = $.trim(
$(responseHtml).filter('div.head:first').text());
alert(songTitle);
}
});