为什么$(' .classname')只返回一个元素,当它的javascript等效document.getElementsByClassname(' classname')返回一个元素数组?如果它不是彼此的等价物,那么它是什么?如何使用jQuery获取具有相同类名的所有元素?除了$(' .classname')之外还有其他方法吗? 例如,
<tr>
<td class="currentMonth">1</td>
<td class="currentMonth">2</td>
<td class="currentMonth">3</td>
<td class="currentMonth">4</td>
<td class="currentMonth">5</td>
如果我使用document.getElementsByClassName(&#39; currentMonth&#39;),那么我将获得上面提到的所有元素的数组。
[ <td class="currentMonth">1</td>, <td class="currentMonth">2</td>, <td class="currentMonth">3</td>, <td class="currentMonth">4</td>, <td class="currentMonth">5</td> ]
但是$('.currentMonth')
,我只能看到一个元素。
如何使用$
获取所有元素?
答案 0 :(得分:5)
$('.currentMonth')
返回所有匹配元素的jQuery对象。它以jQuery方式包装,但它也返回所有元素。您可以使用以下方法获取元素:
$('.currentMonth').each(function () {
this; // Here this refers to each of the matched element.
});
document.getElementsByClassname('currentMonth')
返回DOM对象列表。
例如,如果我正在执行这样的脚本:
$('.currentMonth').html("Hello!");
所有<td>
都将被更改。
答案 1 :(得分:2)
$('.classname')
是一个jQuery对象,而
document.getElementsByClassname('classname')
是DOM对象的列表
$('.classname')
将选择与类claaname
匹配的所有元素,并将生成一个jQuery对象。
$('.classname').html("Whatever")
将删除所有.classname
元素。
答案 2 :(得分:0)
document.getElementsByClassname('classname')
返回一个NodeList
对象,表示具有指定类名的元素集合,使用浏览器内置方法,而$(".className")
返回jQuery对象,你可以使用jQuery方法来操作它