与jQuery $()方法相同的JavaScript的document.querySelector()?

时间:2013-01-01 23:54:27

标签: javascript jquery dom model document

我一直在想,当JavaScript具有通用$(".myClass")时,为什么人们会赞美jQuery的document.querySelector()方法。这里有什么我想念的吗?为什么不直接使用document对象?

我是JavaScript的新手,所以我不知道某些类型的document.querySelector()的con?

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

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

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

注意

我根本没有反对jQuery的东西。事实上,我喜欢它。但是,当我刚刚尝试学习JavaScript时,我宁愿不使用简单的预制即用工具来欺骗自己。

任何帮助将不胜感激! : - )

2 个答案:

答案 0 :(得分:20)

跨浏览器和传统支持。

如果您不想使用Jquery,也可以使用getElementsByClassName()。用户对post on devshed的回复:您可能感兴趣的KorRedDevil。

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

的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>

答案 1 :(得分:11)

大约十年前,顶级浏览器分别是IE6,Netscape 8和Firefox 1.5。在那些日子里,除了Document.getElementById()之外,很少有跨浏览器方式从DOM中选择元素。

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

现在,十多年后,许多使jQuery如此受欢迎的功能已经包含在JavaScript标准中。您现在可以使用$selection.on()而不是jQuery&#39; EventTarget.addEventListener()。现在你可以使用$()等等而不是jQuery的Document.querySelectorAll() ...这就引出了为什么我们应该使用jQuery的问题。事实上,人们越来越wondering whether we should use jQuery at all。所以,如果你认为你很好地理解JavaScript而没有jQuery,请做!不要觉得被迫使用jQuery,因为有很多人正在这样做!

无论如何,要理解为什么jQuery如此受欢迎,了解我们来自哪里非常重要!