2013-10-24 48 views
2

語境依靠ID,類或內容:如何查找和檢索節點位置,而在JavaScript

  • 我需要保持一個用戶&的節點選擇能夠再取回。

  • 如果在html節點上有一個id,我會使用它。

  • 但是,如果沒有ID,問題就會出現。我需要能夠標記該節點&即使在頁面刷新後也能夠找回它。

我嘗試了一些與childnodes的事情,但我失敗了迄今。

回答

2

您可以使用節點相對於其兄弟的位置來定位它在DOM中。在處理嵌套元素時,只需將節點位置與父節點相對於其兄弟的位置前綴。所以你最終得到一個如下所示的節點標識符:2/0/4/1其中每個/對應於一個額外的深度級別。這是一個工作示例:

function getNodePosition(node){  
    var node = $(node); 
    var result; 
    var parent = node.parent(); 
    var siblings = parent.children(); 
    var pos = siblings.index(node); 
    result = '/' + pos; 

    if(parent.length && !parent.is('body')){ 
     result = getNodePosition(parent) + result; 
    } 
    return result; 
} 

function getNodeByPosition(position){ 
    var node = $('body'); 
    var layers = position.substring(1).split('/'); 
    $.each(layers, function(index, val){ 
     val = parseInt(++val); 
     node = node.find(':nth-child(' + val +')')  
    }); 
    return node[0]; 
} 

Jsfiddle

相關問題