JavaScript/jQuery : hasDescendant/hasAncestor

标签 javascript jquery html dom descendant

可笑的是,我很难找到任何半好的方法来确定一个 HTML 元素是否在另一个元素中——这似乎应该是遍历和分析 HTML DOM 的基本核心特征.我对缺少“hasDescendant”(或类似的)方法感到非常惊讶和失望。

我正在尝试这样做:

var frog = $('#frog');
var walrus = $('#walrus');
if (frog.hasDescendant(walrus)) console.log("Frog is within walrus.");
else console.log("Frog is outside walrus.");



我尝试使用许多 jQuery 组合来重现我正在寻找的内容。

walrus.is(frog.parents());
walrus.has(frog);
walrus.find(' *').has(frog);
frog.is(walrus.find(' *'));



我还没有找到可行的解决方案。


[编辑]
解决方案: walrus.has(frog)
备用: if (walrus.has(frog)) { doStuff(); }
备用: var booleanResult = walrus.has(frog).length>0;


//追逐。

最佳答案

jQuery 有这个功能:jQuery.contains : “检查一个 DOM 元素是否在另一个 DOM 元素中。”

演示(live copy):

HTML:

<p id="frog">Frog <span id="walrus">walrus</span></p>

JavaScript:

jQuery(function($) {
  var frog = $("#frog"),
      walrus = $("#walrus");

  display("frog contains walrus? " + $.contains(frog[0], walrus[0]));
  display("walrus contains frog? " + $.contains(walrus[0], frog[0]));

  function display(msg) {
    $("<p>").html(msg).appendTo(document.body);
  }
});

关于JavaScript/jQuery : hasDescendant/hasAncestor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8034582/

相关文章:

Javascript - 如何按顺序从数组中选取随机元素?

c# - 如何使用 C# 或 jquery 匹配段落中的重复单词?

html - 为什么我不能在 bootstrap popover 中使用 class 或 ids

javascript - jquery 预选择 WordPress 网站中的选择选项下拉菜单

javascript字符串删除位置X处的一个字符并添加到开始

javascript - 下拉菜单在子菜单上消失

jQuery 1.9 复选框在取消选中后第二次未选中

javascript - 获取所选元素的第 n 个子元素的数量

javascript - 从 Bootstrap 模式形式更新数据库

html - CSS 悬停在图像问题上悬停在链接上?