在Jquery中获取元素的唯一选择器

我想创建一个类似记录器的东西,它可以跟踪用户的所有动作。为此,我需要确定用户与之交互的元素,以便在以后的会话中可以引用这些元素。

我用伪代码说过,我希望能够做以下事情

HTML示例(可能很复杂):

<html>

<body>

<div class="example">

<p>foo</p>

<span><a href="bar">bar</a></span>

</div>

</body>

</html>

用户单击链接之类的内容。现在,我需要确定被单击的元素并将其位置保存在DOM树中,以备后用:

(any element).onclick(function() {

uniqueSelector = $(this).getUniqueSelector();

})

现在,uniqueSelector应该是这样的(我不在乎它是xpath还是css选择器样式):

html > body > div.example > span > a

这将提供保存该选择器字符串并在以后使用它的可能性,以重播用户执行的操作。

那怎么可能?

回答:

我自己回答,因为我找到了必须修改的解决方案。以下脚本正在运行,并且基于Blixt

jQuery.fn.extend({

getPath: function () {

var path, node = this;

while (node.length) {

var realNode = node[0], name = realNode.localName;

if (!name) break;

name = name.toLowerCase();

var parent = node.parent();

var sameTagSiblings = parent.children(name);

if (sameTagSiblings.length > 1) {

var allSiblings = parent.children();

var index = allSiblings.index(realNode) + 1;

if (index > 1) {

name += ':nth-child(' + index + ')';

}

}

path = name + (path ? '>' + path : '');

node = parent;

}

return path;

}

});

以上是 在Jquery中获取元素的唯一选择器 的全部内容, 来源链接: utcz.com/qa/419848.html

回到顶部