使用 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 查找选择器的主要内容,如果未能解决你的问题,请参考以下文章