JQuery计数2个元素之间的节点深度差异

时间:2016-08-24 07:53:34

标签: javascript jquery

有一种简单的方法来计算2个元素之间的节点深度差异吗?

例如:

<div id="1">
  <div id="2"></div>
  <div id="3">
    <div id="4"></div>
  </div>
</div>
<div id="5"></div>

我想要一些像:

diff($("#1"), $("#2")); //output 1
diff($("#1"), $("#5")); //output 0
diff($("#2"), $("#4")); //output 1
diff($("#1"), $("#4")); //output 2

我认为与父母(),儿童()功能有关,但我不知道......

1 个答案:

答案 0 :(得分:1)

如果我理解你的例子 - 你需要做的就是计算节点的父节点:

&#13;
&#13;
diff($("#1"), $("#2"));
diff($("#1"), $("#5"));
diff($("#2"), $("#4"));
diff($("#1"), $("#4"));

function diff(a, b) {
  $('#output').append(
    a.attr('id') + ' and ' + b.attr('id') + ' = ' +
    Math.abs(a.parents().length - b.parents().length)
    + '<br/>'
  );
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="1">
  <div id="2"></div>
  <div id="3">
    <div id="4"></div>
  </div>
</div>
<div id="5"></div>
<hr/>
<div id="output"></div>
&#13;
&#13;
&#13;