32

我一直想知道为什么$(".myClass")当 JavaScript 有一个通用的document.querySelector(). 我在这里缺少什么吗?为什么不直接使用document对象?

我对 JavaScript 完全陌生,所以有document.querySelector()什么我不知道的骗局吗?

我真的很想知道,因为我之前遇到过这样的事情,我想知道它是否有助于我所处的情况:

var retrieve = function( s ) {
    return document.querySelector( s );
};

retrieve(".myClass").style.display = "block";

笔记

我完全不反对 jQuery。事实上,我喜欢它。但是,当我刚刚尝试学习 JavaScript 时,我宁愿不要使用简单的预制现成工具来欺骗自己。

任何帮助将非常感激!:-)

4

2 回答 2

22

跨浏览器和旧版支持。

如果您不想使用 Jquery,也可以使用 getElementsByClassName()。有一个用户对 devshed 上的帖子的回复:您可能感兴趣的 KorRedDevil。

我从您的帖子中获取了您的函数并使其返回一个数组。在您拥有该元素数组之后,您所要做的就是遍历它们。你可以在这里试试。

Javascript

var retrieve = function(className) {
    return document.getElementsByClassName(className);
};

var elements = retrieve('foo');
for (var i = 0; i < elements.length; i++)
    elements[i].style.background = '#dfd';

标记

<p class="foo">foo</p>
<p class="bar">bar</p>
<p class="foo">foo</p>
<p class="foo">foo</p>
<p class="bar">bar</p>
<p class="bar">bar</p>
于 2013-01-02T01:30:11.423 回答
13

大约十年前,顶级浏览器是 IE6、Netscape 8 和 Firefox 1.5。在那个时候,除了Document.getElementById().

所以,当 jQuery在 2006 年发布时,它是相当具有革命性的。那时,jQuery 为如何轻松选择/更改 HTML 元素和触发事件设定了标准,因为它的灵活性和对浏览器的支持是前所未有的。

现在,十多年后,许多让 jQuery 如此流行的特性已经包含在 JavaScript 标准中。代替 jQuery 的$selection.on(),你现在可以使用EventTarget.addEventListener(). $()现在,您可以使用...代替 jQuery ,而使用Document.querySelectorAll()... etc... 这引出了我们为什么应该使用 jQuery 的问题。事实上,人们越来越想知道我们是否应该使用 jQuery。所以,如果你认为你对 JavaScript 的理解足够好,可以不用 jQuery,请这样做!不要因为很多其他人都在使用 jQuery 而感到被迫使用 jQuery!

无论如何,要了解为什么 jQuery 如此受欢迎,重要的是要了解我们的出发点!

于 2016-03-29T20:48:06.733 回答