0

我需要从匹配的选择器中获得一个完整的、有效的选择器,或者至少能够循环通过其中的一组

这是我需要的一个例子。它适用于前两个用例,但不适用于最后一个。

(function($){
      $.fn.getSelector = function(){
          return(this.selector);
      }
    })(jQuery)
4

1 回答 1

1

作为一个经验法则,如果 jQuery 对象由一个字符串选择器构成,则只能使用 this.selector。当然也有像 find('') 这样的情况,其中选择器被计算出来并且仍然可用。(检查jquery 源代码中的 add 函数(以及 pushStack))。然而,它并没有被计算出来(即使在某些情况下很容易做到)。

您可以做的是遍历选择器的所有元素并为它们计算有效的选择器路径。在 jquery (AFAIK) 中没有内置的解决方案,但即使在 stackoverflow 上也有一些关于如何执行此操作的示例。

例如:我如何从 jQuery 对象中获取选择器这里有一些可用的答案,比如反向计算 dom。但是您需要对每个项目都这样做,即使这样,对于 jquery 集合,也可能没有可用的理智选择器只匹配选定的元素,因此会有很多误报匹配。所以这绝对不是一个完美的解决方案。您还需要加工过的物品。

您还可以做的是覆盖 jquery 的 add 方法。只有当原始对象和 add 方法都有一个字符串类型的选择器时,它才会起作用。检查这个小提琴。我确信它可以通过多种方式进行升级,例如当 add 方法将 jQuery 对象作为选择器参数并且它的选择器属性可用时构造选择器,但这只是一个开始。

于 2012-09-06T10:05:29.677 回答