javascript - 如何按类查找子元素的父元素 - Jquery

标签 javascript jquery parent-child children

我已经审查过类似的问题,但我仍然是 Jquery 的新手,并且无法理解解决方案,并且希望有一个确切的示例。

这就是我正在尝试做的事情:

<div class="parent">
    <span class="random">
       <span class="child">

仅当子项拥有类为“父项”的父项(不是直接父项)时,我才想更改“子项”的 .innerHtml 内容。

我确信“子”类会存在,但我不知道页面上是否存在“父”类。

可能有多个“子”类元素,也可能有多个“父”类元素。如果任何一个“子” child 拥有“ parent ”,他们都需要采取行动。

嵌套的子跨度是由另一个库创建的,因此我无权向它们提供 ID 或任何内容。

我期望这样的行为,但显然,这段代码是不正确的:

var children = document.getElementsByClass('child');

foreach(children as child){
   if (child.hasParent(.parent)){
        child.innerHTML = "New Text";
}
  1. 执行此操作的正确方法是什么,以及
  2. 如果页面中没有“父”元素,如何防止出现问题?

最佳答案

您可以使用 document.querySelectorAll() 查找具有类“child”且其父类具有“parent”类的所有元素:

var children = document.querySelectorAll(".parent .child");

这会返回一个匹配的节点列表,可能是一个空列表:

for (var i = 0; i < children.length; ++i)
  children[i].innerHTML = "New Text";

.querySelector()querySelectorAll() 方法即使在 IE8 中也能工作(大部分),因此这种方法非常通用。

由于您使用 jQuery 标记了问题,因此您也可以使用该库来完成此操作:

$(".parent .child").html("New Text");

这将使用“父”父节点更新所有“子”元素; jQuery 为您完成所有迭代。

关于javascript - 如何按类查找子元素的父元素 - Jquery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32782605/

相关文章:

javascript - 对 Promise 中 thenable 回调的工作方式感到困惑吗?

javascript - id 值中无法识别的表达式 jquery

c - 信号量无法正常工作

parent-child - 使用 nightwatch js 列出子元素

javascript - 重命名 node.js Sequelize 时间戳列

javascript - fullPage.js 垂直 slider 导航点的对齐

javascript - 使 Bootstrap Collapse 上的面板标题可点击

javascript - 如何使用每个有 mustache 的 javascript?

c# - Unity C# 2D 实例化和操纵弹丸作为玩家的 child

javascript - 如何用JavaScript隐藏浏览器地址栏