2016-08-24 69 views
-1

有一种简单的方法来计算2个元素之间的节点深度差异?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 

我觉得有一些做父母(),儿童()函数,但我不知道。 ..

+0

是什么 “节点型动物/区别”?解释你如何得到你的例子数字。 – Jamiec

+0

为什么'#1'和'#5' = 0;但是每当你进入一个元素时'#2'和'#4' = 1 – Justinas

+0

,你将一个计数器增加1.因此对于#2和#4,你从节点#2开始计数器= 0,你需要进入#3获得#4,所以你增加计数器1.我不知道如何解释 –

回答

1

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

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/>' 
 
); 
 
}
<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>

+0

是的,这是聪明的,很好的方式来解决我的问题 –