1

可以说我有一个功能:

$.fn.foo = function (arg) {
    // some code
}

正常调用,如下所示:

$('#bar.baz').foo("banana");

'#bar.baz'是否可以从函数中检索“查询”选择器 ( ) $.fn.foo

例如:

$.fn.foo = function (arg) {
    console.log($(this).getQuerySelector()); // --> '#bar.baz'
}

或者是否有必要将其作为参数传递($('#bar.baz').foo('#bar.baz', 'banana');

4

2 回答 2

1

规范的答案是使用 jQuery 对象的selector属性:

$.fn.foo = function(arg) {
    console.log(this.selector);
};

但是,自 jQuery 1.7 起,该属性已被弃用:

该属性在 jQuery 1.7 中已弃用,仅在 jQuery Migrate 插件.selector支持所需的范围内进行维护。.live()在未来的版本中,它可能会被删除,恕不另行通知。该属性从来都不是一个可靠的选择器指示符,它可用于获取当前包含在 jQuery 集中的元素集,其中它是一个属性,因为后续的遍历方法可能已经更改了该集。

因此,最好在较新的代码中将选择器作为显式参数传递。

于 2013-10-17T12:16:22.387 回答
0

是的,它正在使用 .selector

console.log($(this).selector);
于 2013-10-17T12:15:43.167 回答