如何找到最短的 Selector

Posted

技术标签:

【中文标题】如何找到最短的 Selector【英文标题】:How to find the shortest Selector 【发布时间】:2012-10-19 16:07:43 【问题描述】:

如何获得任何被点击元素的最短选择器? 我想稍后使用此选择器来恢复相同(或几乎相同)的结果。

有没有现成的方法?

我的想法是优先搜索:

    一次性 ID 带计数器的多用 ID 单用名称 带计数器的多用名称 一次性类名 带计数器的多用类名 到 1.-6 的最短父路径。

不知道如何构建最短路径以实现最大可靠性和最大灵活性(例如新的父标签或代码中的移动)。

【问题讨论】:

这很大程度上基于标记的结构。 对于 jQuery 选择器和 CSS 选择器,您会得到截然不同的结果... 【参考方案1】:

我建议如下:

当一个元素被点击时

    查看是否有 ID,如果有,则选择器为 #<id> 如果它没有ID,则生成一个随机标识符并将其分配为元素的ID,您的选择器为#<generated-id>

即类似:

var selector = '';

$('element').click(function() 
    var self = $(this);
    if(!self.is('[id]')) 
        var id = 'ljhlihj'; // replace with code to generate random ID
        self.attr('id', id);
    
    selector = '#' + self.attr('id');

【讨论】:

好主意,但我想在未知的外国网站上使用它,我无法在他们的代码上保存任何内容。 (并且希望每次都使用最新的实时版本)

以上是关于如何找到最短的 Selector的主要内容,如果未能解决你的问题,请参考以下文章

如何找到最短的堆栈移动序列以获得目标堆栈?

如何在c程序中找到最长和最短的字符串?

在单词中找到最短的重复周期?

尝试使用数组在字符串中找到最短的句子

是否有一种算法可以为给定范围内的每个条目找到最短的二进制表示?

两个节点之间最便宜和最短的路径