使用 jQuery 查找选择器

Posted

技术标签:

【中文标题】使用 jQuery 查找选择器【英文标题】:find selector used jQuery 【发布时间】:2015-12-08 03:15:29 【问题描述】:

我正在制作一个 jQuery 插件,我想知道是否有一种方法可以找到用户用来应用插件的选择器。例如,如果用户选择这个:

$(".myClass").pluginName();

然后插件会返回myClass,以后可以使用。有什么办法可以做到吗?

【问题讨论】:

你为什么要这样做?当然,在插件实例中存储对选定元素的引用更有用。如果您的意思是从您的 pluginName() 调用返回,那将破坏标准的 jQuery 链接。 我该怎么做? @yak613 元素在this. 问题:你打算以后用选择器做什么?这很可能会改变问题(因为它目前有点模糊)。 除了应用插件的元素之外,您需要的任何东西都应该在插件的选项参数中。所以你可以做$(selector).pluginName( class: "myClass" ); 【参考方案1】:

在调试器中检查 jQuery 对象,它有一个属性selector,其中包含用于创建集合的选择器。我不知道这是否是您可以指望在未来版本中保持可用的公共 API,或者这是一个可能会在没有警告的情况下更改的实现细节。

与其他评论者一样,我质疑引用选择器的必要性。在您的插件中,您可以简单地遍历所有选定的元素,而无需再次通过 DOM 执行搜索。只需在您的插件中使用this.each()

【讨论】:

【参考方案2】:

假设这是您的选择:

var $selection = $('a, i');

如果要获取选择器,只需使用selector 属性即可:

var selector = $selection.selector;

在这种情况下,selector 变量的值将是字符串 a, i


注意:

虽然 selector 属性包含在 jQuery 1.11.0 和 jQuery 2.1.3 中,但它似乎在 jQuery 3.0.0 alpha1 中缺失。这可能就是为什么:

.selector 属性在 jQuery 1.7 中已弃用,仅 保持在 jQuery 中支持 .live() 所需的程度 迁移插件。在未来的版本中,它可能会被删除,恕不另行通知。

source

如果您能想出一个很好的理由说明为什么该功能应该保留在 jQuery 核心中,您可能想向 jQuery 开发团队提出上诉,并要求他们改变决定以删除该功能。

【讨论】:

以上是关于使用 jQuery 查找选择器的主要内容,如果未能解决你的问题,请参考以下文章

使用 jQuery 查找选择器

jQuery 查找标签

前端学习笔记之jQuery选择器一

jQuery——选择器

带有变量和查找的 Jquery 选择器

包含子选择器的jQuery查找