我正在使用带有以下代码的 JavaScript 从我的 HTML 中检索图像:
var images = document.getElementsByTagName("img");
如果我正确理解 JavaScript,这将返回 HTMLImageElement 类型的对象。我可以使用 .className 变量直接访问它的变量,但我不能在其上调用 Jquery .hasClass() 方法。为什么是这样?
我正在使用带有以下代码的 JavaScript 从我的 HTML 中检索图像:
var images = document.getElementsByTagName("img");
如果我正确理解 JavaScript,这将返回 HTMLImageElement 类型的对象。我可以使用 .className 变量直接访问它的变量,但我不能在其上调用 Jquery .hasClass() 方法。为什么是这样?
因为.hasClass()
是一个jQuery函数。您可以在 jQuery 对象上调用它,而不是在原生 DOM 对象上调用它。简单的解决方案是创建一个 jquery 对象:
var domElement = document.getElementById('something');
var hasSomeClass = $(domElement).hasClass('some-class');
当然,如果您已经在使用 jQuery,为什么不这样做:
var $images = $('img');
在jQuery中:
$("img").each(function(){
if($(this).hasClass("className")){
}
});
这是因为 jQuery 元素不同于 HTML 元素。jQuery 元素是特殊的 jQuery 对象,您只能在这些对象上运行 jQuery 方法。但是,您可以像这样将元素转换为 jQuery 对象:
var images=document.getElementsByTagName('img');
var jQueryImages=$(images)
但您也可以像这样直接使用 jQuery 进行操作:
var jQueryImages=$('img');
最后一件事,该函数不返回HTMLImageElement
. 它返回 a NodeList
,因为文档中可能有多个img
元素。ANodeList
本质上是一个元素数组。