如果元素不存在,则jQuery获取搜索选择器

时间:2012-06-23 14:41:04

标签: javascript jquery jquery-plugins jquery-selectors

如果元素不存在,我如何获取搜索到的选择器的字符串?

例如:

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

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

我将开始挖掘jQuery源代码,但我想我会问,如果有更多知识的人知道这一点。

2 个答案:

答案 0 :(得分: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插件...)

答案 1 :(得分:2)

有选择器属性:

$.fn.plugin = function() {
  if (this.length == 0) {
    return this.selector;
  }
};