为啥 jQuery 选择器只选择特定网站上的第一个层次结构元素?

Posted

技术标签:

【中文标题】为啥 jQuery 选择器只选择特定网站上的第一个层次结构元素?【英文标题】:why is jQuery selector only selecting first hierarchy element on specific website?为什么 jQuery 选择器只选择特定网站上的第一个层次结构元素? 【发布时间】:2020-09-09 21:46:24 【问题描述】:

我正在尝试从该网站中选择一些元素: https://www.pexels.com/

例如,我尝试使用这个简单的选择器将 div 父容器内的所有 divs 元素与“photos__column”类匹配:

$('div.photos__column div')

但结果它只选择了第一个,为什么会发生这种情况?

提前致谢。

【问题讨论】:

您能否发布相关的 html 而不是指向该站点的链接?这将使这对未来的访问者更有用,因为 HTML 可以随时在该网站上更改。 【参考方案1】:

$ 可以是任何东西。

这个网站有 jQuery 吗?您可以通过

在浏览器控制台中查看
$.fn.jquery

使用原生 DOM API 进行查询

document.querySelectorAll('div.photos__column div')

有效。

【讨论】:

详细说明一下,如果你只是使用 Chrome 控制台,$document.querySelector 的别名,$$document.querySelectorAll。前者只选择一个元素。事实上,那个网站似乎没有 jQuery。【参考方案2】:

$('div.photos__column div') 返回一个数组,其中包含具有此模式 "div.photos__column div" 的所有元素,但是当您调用像 text() 这样的函数时,函数文本仅使用数组的最触发结果

如果你想对所有选定的元素进行操作,你可以使用:

$('div.photos__column div').each(function( index ) 
  console.log( index + ": " + $( this ).attr("src") );
);

或者如果你想按索引选择元素,你可以按 hir 索引调用元素,例如:$('div.photos__column div')[2]

您可以使用此查询从主页获取所有 img 源吗:

var allimegs = document.querySelectorAll(".photo-item__img");
var newsrc = [] ;for(var i = 0;i<allimegs.length;i++)
    newsrc[i] = allimegs[i].getAttribute("src"); 

【讨论】:

以上是关于为啥 jQuery 选择器只选择特定网站上的第一个层次结构元素?的主要内容,如果未能解决你的问题,请参考以下文章

jQuery mobile:当我将选择菜单附加到不同页面上的另一个 DOM 节点时,为啥会中断?

jQuery 选择器:获取包含特定单词的第一个元素类的内容

使用 JQuery 在页面上的第一个元素中选择第一个出现的子项?

jQuery学习笔记使用选择器二

为啥 jQuery 不选择所有属性元素?

jQuery 颜色 **Swatch** 选择器