在使用jquery选择的元素中获取使用的选择器

时间:2014-01-27 10:21:40

标签: jquery

有没有办法获取用于查找带有jquery的元素的选择器?例如 我选择了这样一个元素:

<span class="test1">lala</span>

a = $('.test1, .test2')

a中的属性是否包含.test1选择器字符串? 我能想到的唯一解决方案是ittearte over all选择器并测试它们是否匹配

var selectors = ['.test1', '.test2'];

a = $(selectors.join(','))

var selector = selectors.find(function(s)return a.is(s))

3 个答案:

答案 0 :(得分:2)

你可以使用.selector但它在1.7中已弃用并在1.9中删除

console.log(a.selector) //returns .test

文档:http://api.jquery.com/selector/

答案 1 :(得分:1)

作为Anton mentions,执行此操作的built-in way已被弃用(出于各种非常好的理由),并且已被删除。

这样做的可靠方法是:

var sel = ".test";
a = $(sel);
a.data("selector", sel);

如果您需要做很多事情,请使用函数将其封装

function $memo(selector) {
    return $(selector).data("selector", selector);
}
// Usage:
a = $memo(".test");

然后,只要您需要知道,就可以从data获取选择器:

var sel = a.data("selector");

答案 2 :(得分:0)

这并不容易。因为安东这样做的方式已被弃用。 但是事件变量包含非常隐藏的选择器。

看看我是如何实现它的:

$('.test, .test2').on('click', function (e) {
  console.log 'Selector: ', e.currentTarget.classList[0]
}

这也是一个工作小提琴: http://jsfiddle.net/fKyZ4/2/