使用jquery实现一个生成某个DOM元素的xpath函数

 

实现一个函数,生成某个DOM元素的xpath,主要包含两部分:标签层级和兄弟元素中的顺序

功能如下:

<body>
	<ul>
		<li>
			<span>1</span>
		</li>
		<li>
			<span>2</span>
			<span>3</span>
			<span id="span_3">4</span>
		</li>
	</ul>
</body>

如果传入id="span_3"的元素,生成的xpath是body>ul[0]>li[0]>span[2] 实现如下文js代码,需引入jquery

function getPath($ele) {
        function path(el, obj) {
          if (el[0].nodeName === 'BODY') {
            obj['BODY'] = ''
            return obj
          } else if (el.parent()[0].nodeName === 'BODY') {
            var children = el.parent().children()
            for (var i = 0, len = children.length; i < len; i++) {
              if (el[0] === children[i]) {
                obj[el[0].nodeName] = i
              }
            }
            obj['BODY'] = ''
            return obj
          } else {
            var children = el.parent().children()
            for (var i = 0, len = children.length; i < len; i++) {
              if (el[0] === children[i]) {
                obj[el[0].nodeName] = i
              }
            }
            path(el.parent(), obj)
          }
        }
        let o = {};
        path($ele, o)
        var str = ''
        for (var k in o) {
          if (o[k] === '') {
            str += k + "&"
          } else {
            str += k + "[" + o[k] + "]" + "&"
          }
        }
        return str.trim().split("&").reverse().join(">").slice(1).toLowerCase()
}

// 使用
console.log(getPath($('#test')))
 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值