2016-08-24 57 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

是的,這是聰明的,很好的方式來解決我的問題 –