【问题标题】:JavaScript Methods on jQuery SelectorsjQuery 选择器上的 JavaScript 方法
【发布时间】:2017-07-01 16:50:31
【问题描述】:

如何从 JQuery 选择器访问核心 HTML DOM 元素?

例如下面的代码:

$(document.body).appendChild(x);

将不起作用,因为$(document.body) 所指的 DOM 对象被 JQuery 选择器对象包裹。

(请不要建议我可以使用jQuery的append()代替,这只是一个例子)

【问题讨论】:

  • Have you tried你想试试看是否有效?
  • $(document.body)[0].appendChild(x);,这里$(document.body)[0]返回dom对象
  • 如果你打算使用原生 Javascript 函数,那你为什么还要使用 jQuery?然后,您将毫无目的地包含数千行代码。
  • @Arjun 为什么要将它包装在 jq 对象中?实际上,我从您发布的示例中看不出任何原因
  • @D4V1D 这肯定行不通。我想知道如何让它发挥作用。我还编辑了问题以突出我的意图。

标签: javascript jquery dom sizzle


【解决方案1】:

jQuery 对象是原生 DOM 元素的数组。所以试试这个:

$(document.body)[0].appendChild(x)

另一方面,如果你有一个原生 DOM 元素,你可以将它包装在一个 jQuery 对象中,以便在其上使用 jQuery 的方法。

var x = document.getElementsByTagName('div');
$(x).remove(); // wrap it with $ to use jQuery methods.

【讨论】:

  • jq 对象是类数组对象,而不仅仅是数组
  • $(document.body).get(0).appendChild(x).
  • @Jai 为什么不document.body
  • @Tushar 因为 op 想要将 js 方法分配给 jquery 对象。我想您的评论应该可以在所有其他发布的答案中获得.....;)
  • @Arjun 我编辑了我的答案,希望我理解正确!否则,您能否具体说明JavaScript selector 的含义?
【解决方案2】:

.get() 应该这样做:

$(document.body).get(0)

【讨论】:

    【解决方案3】:

    由于 jQuery 是在 Sizzle 之上构建的,您可以参考 this 链接下的 Sizzle 文档。

    由于$只是一个别名,可以参考文档:

    $(String selector[, DOMNode context[, Array results]])
    

    查找元素的主要功能。使用 querySelectorAll 如果 可用。

    上面将返回一个数组,即使只有一个元素。因此,如果您想准确引用一个元素,则必须使用数组索引,例如:

    $(document.body)[0].appendChild(x);
    

    【讨论】:

    • @Arjun 你能详细说明你的陈述吗?
    • @Jai No. var elem = document.querySelector('#parent .child:nth-child(1)'); $(elem).addClass('HelloWorld'); 在 Javascript 对象上调用 jQuery 方法
    • @Jai 我知道,但这就是 OP 想要的反之亦然,我知道当你可以直接使用 jQuery 但 OP 想要它时,这不是首选
    【解决方案4】:

    这是一个绝对可以工作的原生 DOM 代码:

    document.body.appendChild(x)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-10
      • 2018-03-24
      • 2013-06-26
      • 2012-03-19
      相关资源
      最近更新 更多