1

如果一个元素不存在,我如何得到一个被搜索的选择器的字符串?

例如:

$( 'parent child.class' ).plugin( )

在我的插件中,我想获取 string "parent child.class",但$( 'parent child.class' )不存在。

我将开始深入研究 jQuery 源代码,但我想我会问一下,以防有更深入了解的人知道这一点。

4

2 回答 2

3

你不能。

jQuery 对象有一个.selector属性,你可以在你的插件中使用它(虽然它似乎是为了与 jQuery 一起使用),但是 - 这是一个很大的但 - 并非所有 jQuery 对象都是使用选择器字符串创建的。考虑这个例子使用.yourPlugin()

$('div.someClass').add(document.getElementById("test"))
                  .add("<div>Hello</div>")
                  .filter(function() {
                      return $(this).attr("data-test") == "blah";
                  })
                  .parents()
                  .yourPlugin();

考虑是什么选择器导致 jQuery 对象最终传递给 是没有意义的.yourPlugin(),无论它是否包含任何元素。

(我想如果你知道你的插件只会被你使用并且你只会传递使用选择器创建的jQuery对象,那么你可以this.selector在你的插件中使用......)

于 2012-06-23T15:05:49.023 回答
2

有选择器属性:

$.fn.plugin = function() {
  if (this.length == 0) {
    return this.selector;
  }
};
于 2012-06-23T14:49:28.140 回答