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

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

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

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

【问题讨论】:

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

标签: javascript jquery css css-selectors jquery-selectors


【解决方案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 开发团队提出上诉,并要求他们改变决定以删除该功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-30
      • 2011-10-26
      • 1970-01-01
      • 1970-01-01
      • 2012-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多