gpt4 book ai didi

javascript - 获取 jQuery 中所有匹配项的 CSS 选择器

转载 作者:太空宇宙 更新时间:2023-11-04 12:16:42 25 4
gpt4 key购买 nike

我想获取 jQuery 项集的 CSS 选择器。

在这种情况下,jQuery 元素集是指基于一些 css 选择器创建的 jQuery 集,并由一些 jQuery 函数扩展,如 .children 等,如 $(".basic-selector") .children();

直接选择这种简单的场景很容易搞定:

$("div.someclaass").selector //works ok - gives div.someclass

但我还需要为更复杂的场景获取 css 选择器(这里 jQuery 没有返回有效的 css 选择器)

$("div.someclass").children("p").selector //schould give div.someclass > p

还有更复杂的场景,比如

$("ul, ol").children("li").selector //should give ul > li, ol >li

这可能吗?

要求:

  • 必须是有效的css选择器

  • 我无法更改创建集合的js代码

  • 它应该适用于所有此类 jQuery 函数css 选择器 - 如 children, find, next, nextAll, .filter (与 css 参数)等

有一些函数,如 .prev.parent 没有 css 选择器 - 我知道这一点。

为什么我需要它? - 我有我的 plugin .它需要一些基于选择器创建的 jQuery 集,并在这些元素上执行一些功能。而且 - 将来需要对以后添加的新元素执行函数,如果它们在集合创建代码执行时存在,则匹配该集合。为了更好地理解,请查看插件页面。

最佳答案

.selector 属性是 deprecated并且只能在通过直接传递选择器字符串创建 jQuery 元素集时使用。如您所见,一旦您开始从原始集合开始链接遍历或过滤方法,.selector 将完全停止表示有效的选择器。从 .selector 可以拥有的值类型来看,它似乎根本不打算用于除内部使用之外的任何其他用途。

但这里真正的问题是并非所有元素集都可以用有效的 CSS 选择器表示(不是没有枚举所有可能的 :nth-child() 排列),其中最重要的是是因为许多 jQuery 的非标准选择器没有标准的等价物。即使你将自己局限于标准选择器和可以用选择器表示的遍历方法,如果原始元素集是通过其他方式获得的,或者如果它是正常获得然后被篡改的,你将无法检测到这一点,甚至不使用 .selector ,正如我提到的那样,无论如何都不推荐使用。

如果您真的需要一个选择器字符串来匹配您的选择,最简单的方法是手动编写它并将其存储在一个单独的变量中。

关于javascript - 获取 jQuery 中所有匹配项的 CSS 选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28652546/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com