如何找到&检索节点位置而不依赖于javascript中的id,类或内容

时间:2013-10-24 01:56:19

标签: javascript

上下文:

  • 我需要保留用户和节点的节点选择。能够在以后检索它。

  • 如果html节点上有id,我将使用它。

  • 但问题是在没有身份证时到达。我需要能够标记这个节点&即使页面刷新后也能找到它。

我尝试了几个带有子节点的东西,但到目前为止我都失败了。

1 个答案:

答案 0 :(得分: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