1 <!DOCTYPE html> 2 <html> 3 <head> 4 <script src="/jquery/jquery-1.11.1.min.js"> 5 </script> 6 <script> 7 8 function readXPath(element) { 9 if (element.id! == ""){//判断id属性,如果这个元素有id,则显 示//*[@id="xPath"] 形式内容 10 return '//*[@id="'+element.id+'"]'; 11 } 12 13 if (element.getAttribute("class")! == null){ //判断class属性,如果这个元素有class,则显 示//*[@class="xPath"] 形式内容 14 return '//*[@class="'+element.getAttribute("class")+'"]'; 15 } 16 //因为Xpath属性不止id和class,所以还可以更具class形式添加属性 17 18 //这里需要需要主要字符串转译问题 19 20 21 if (element == document.body){//递归到body处,结束递归 22 return '/html/'+element.tagName.toLowerCase(); 23 } 24 26 var ix= 0,//在nodelist中的位置,且每次点击初始化 27 siblings= element.parentNode.childNodes;//同级的子元素 28 29 for (var i= 0,l=siblings.length; i<l; i++) { 30 var sibling = siblings[i]; 31 if (sibling == element){//如果这个元素是siblings数组中的元素,则执行递归操作 32 return arguments.callee(element.parentNode)+'/'+element.tagName.toLowerCase()+((ix+1)==1?'':'['+(ix+1)+']');//ix+1是因为xpath是从1开始计数的,element.tagName+((ix+1)==1?'':'['+(ix+1)+']')三元运算符,如果是第一个则不显示,从2开始显示 33 }else if(sibling.nodeType == 1 && sibling.tagName == element.tagName){//如果不符合,判断是否是element元素,并且是否是相同元素,如果是相同的就开始累加 34 ix++; 35 } 36 } 37 }; 38 39 $(document).ready(function () { 40 var xpath = '', o; 41 $('*').click(function (e) { 42 e.stopPropagation();//停止冒泡 43 o = this; 44 alert(readXPath(o)); 45 }); 46 }); 47 48 </script> 49 </head> 50 <body> 51 <p>如果您点击我,我会消失。</p> 52 <p>点击我,我会消失。</p> 53 <p>也要点击我哦。</p> 54 </body> 55 </html>