是否存在反向查询选择器?

Tom*_*Tom 7 javascript firefox dom

我知道我可以使用 querySelector 来定位文档中的元素

var element = document.querySelector(".myclass")
Run Code Online (Sandbox Code Playgroud)

但是否存在一个反向查询选择器使得:

var selector = document.inverseQuerySelector(element);
Assert.AreEqual(element, document.querySelector(selector));
Run Code Online (Sandbox Code Playgroud)

inverseQuerySelector 返回的选择器总是唯一标识指定元素?

Edg*_*ado 1

不,因为有许多选择器(可能是无限的)可以选择相同的元素。

对于一个可逆函数(即使在数学中),它的映射必须是 1 到 1,但事实并非如此。

顺便说一句,正因为如此,您可以创建一些仅在某些情况下有效的东西。例如:

function inverseForElementWithUniqueId(element){
   return '#' + element.id;
}

var selector = inverseForElementWithUniqueId(element);
Assert.AreEqual(element, document.querySelector(selector));   //True
Run Code Online (Sandbox Code Playgroud)

(代码确实可能看起来微不足道)

但如前所述,由于理论原因,这只适用于一小部分情况。

但是,它只能在某些时候起作用