获取元素的xpath, 转换xpath为csspath进行jQuery元素获取

Java代码  收藏代码
  1. var $shadow = new Object();  
  2.     /** 
  3.         获取元素的xpath 
  4.         特性: 
  5.         - 转换xpath为csspath进行jQuery元素获取 
  6.         - 仅生成自然表述路径(不支持非、或) 
  7.         @param dom {String/Dom} 目标元素 
  8.         @returns {String} dom的xpath路径 
  9.     */  
  10.     $shadow.domXpath = function(dom) {  
  11.       dom = $(dom).get(0);  
  12.       var path = "";  
  13.       for (; dom && dom.nodeType == 1; dom = dom.parentNode) {  
  14.         var index = 1;  
  15.         for (var sib = dom.previousSibling; sib; sib = sib.previousSibling) {  
  16.           if (sib.nodeType == 1 && sib.tagName == dom.tagName)  
  17.             index++;  
  18.           }  
  19.         var xname =  dom.tagName.toLowerCase();  
  20.         if (dom.id) {  
  21.           xname += "[@id=\"" + dom.id + "\"]";  
  22.         } else {  
  23.           if (index > 0)  
  24.             xname += "[" + index + "]";  
  25.         }  
  26.         path = "/" + xname + path;  
  27.       }  
  28.         
  29.       path = path.replace("html[1]/body[1]/","html/body/");  
  30.         
  31.             return path;  
  32.     };  


Java代码  收藏代码
  1. /** 
  2.             根据xpath获取元素 
  3.             特性: 
  4.             - 转换xpath为csspath进行jQuery元素获取 
  5.             - 仅支持自然表述(不支持非、或元素选取) 
  6.             @param xpath {String} 目标元素xpath 
  7.             @returns {jQuery Object} 元素/元素集合 
  8.     */  
  9.     $shadow.xpathDom = function(xpath){  
  10.             // 开始转换 xpath 为 css path  
  11.             // 转换 // 为 " "  
  12.             xpath = xpath.replace(/\/\//g, " ");  
  13.             // 转换 / 为 >  
  14.             xpath = xpath.replace(/\//g, ">");  
  15.             // 转换 [elem] 为 :eq(elem) : 规则 -1  
  16.             xpath = xpath.replace(/\[([^@].*?)\]/ig, function(matchStr,xPathIndex){  
  17.                     var cssPathIndex = parseInt(xPathIndex)-1;  
  18.                     return ":eq(" + cssPathIndex + ")";  
  19.             });  
  20.             // 1.2 版本后需要删除@  
  21.             xpath = xpath.replace(/\@/g, "");  
  22.           // 去掉第一个 >  
  23.           xpath = xpath.substr(1);  
  24.           alert(xpath);  
  25.                 // 返回jQuery元素  
  26.           return $(xpath);  
  27.     };  
 
posted @ 2016-10-12 15:27  吃饭了吗  阅读(4500)  评论(0编辑  收藏  举报