【问题标题】:js how to get selector from $(document) & $(window)?js 如何从 $(document) 和 $(window) 中获取选择器?
【发布时间】:2013-01-31 19:22:30
【问题描述】:

我想知道如何从 $(document) & $(window) 中获取选择器?

el = $(document);

alert(el.selector); // return nothing, I want to output -> document

el = $(window);

alert(el.selector); // return nothing, I want to output -> window

非常感谢!

【问题讨论】:

  • selector 属性仅供内部使用,如果是这样,则只能用于调试。
  • 你的意思是alert(el.context);?选择器始终是字符串,您不会将任何选择器传递给 jQuery 函数。
  • 如果您能详细说明为什么您需要这样做,您可能会得到一些有用的建议。

标签: javascript jquery window selector document


【解决方案1】:

没有选择器,所以什么都没有。您正在传递一个节点。

"selector" 是符合Selectors API 的文本字符串,这与CSS 使用的API 相同。在 JavaScript 中,选择器是 API 的子集,或者如果使用 jQuery,则有专有扩展。

【讨论】:

    【解决方案2】:

    当您从 DOM 元素或类似 window 的东西实例化 jQuery 对象时,没有选择器值。

    如果您只是想知道一个 jQuery 对象是否包装 documentwindow,请执行以下操作:

    if (theObject.length === 1 && theObject[0] === document) {
      // it's $(document) ...
    }
    

    其实你也可以这样做:

    if (theObject.is(document)) {
    

    if (theObject.is(window))
    

    如果您也想测试特定的 DOM 元素,.is() 函数也可以使用。

    【讨论】:

    • 我试过了,它适用于 .is(document),但不适用于 .is(window)
    • @Till 嗯......你是对的;这很奇怪。我不知道为什么那行不通,除非它专门用于仅适用于 DOM 的一部分(而 window 并不是真正的 DOM 的一部分)。我看一下jQuery源码。
    • 还要注意is() 将返回true,只要至少1 个被包装的元素与选择器匹配。所以$(document).add('body').is(document) 是真的。
    • Rofl,这是一个很好的@Pointy。任何想亲眼看看的人的演示:fiddle
    【解决方案3】:

    没有选择器。 jQuery 将那些 DOM 元素引用包装在 jQuery 对象中。

    欲了解更多信息,请参阅jQuery source init

    【讨论】:

      猜你喜欢
      • 2010-11-23
      • 1970-01-01
      • 2016-06-03
      • 1970-01-01
      • 2011-01-26
      • 2021-01-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多