2013-02-13 106 views
1

我有一个html元素,我想用作书签但​​我不能修改html文档。 我想将此元素存储在其他地方,并将其保存为Xpath查询。jquery将元素转换为xpath查询

有没有办法到HTML元素转换为XPath查询指着它?

+0

您是指DOM结构作为路径? – 2013-02-13 07:20:53

+0

是的,我有一个Dom元素,并希望将其存储为XPath查询 – 2013-02-13 07:25:28

回答

0

这里是从simular问题一个method收到了这样的DOM路径:

function createXPathFromElement(elm) { 
    var allNodes = document.getElementsByTagName('*'); 
    for (segs = []; elm && elm.nodeType == 1; elm = elm.parentNode) 
    { 
     if (elm.hasAttribute('id')) { 
       var uniqueIdCount = 0; 
       for (var n=0;n < allNodes.length;n++) { 
        if (allNodes[n].hasAttribute('id') && allNodes[n].id == elm.id) uniqueIdCount++; 
        if (uniqueIdCount > 1) break; 
       }; 
       if (uniqueIdCount == 1) { 
        segs.unshift('id("' + elm.getAttribute('id') + '")'); 
        return segs.join('/'); 
       } else { 
        segs.unshift(elm.localName.toLowerCase() + '[@id="' + elm.getAttribute('id') + '"]'); 
       } 
     } else if (elm.hasAttribute('class')) { 
      segs.unshift(elm.localName.toLowerCase() + '[@class="' + elm.getAttribute('class') + '"]'); 
     } else { 
      for (i = 1, sib = elm.previousSibling; sib; sib = sib.previousSibling) { 
       if (sib.localName == elm.localName) i++; }; 
       segs.unshift(elm.localName.toLowerCase() + '[' + i + ']'); 
     }; 
    }; 
    return segs.length ? '/' + segs.join('/') : null; 
}; 

而用于测试的fiddle(路径在控制台示出)。

+0

感谢您的回答。 – 2013-02-13 09:10:55