1

我正在使用带有以下代码的 JavaScript 从我的 HTML 中检索图像:

var images = document.getElementsByTagName("img");

如果我正确理解 JavaScript,这将返回 HTMLImageElement 类型的对象。我可以使用 .className 变量直接访问它的变量,但我不能在其上调用 Jquery .hasClass() 方法。为什么是这样?

4

3 回答 3

7

因为.hasClass()是一个jQuery函数。您可以在 jQuery 对象上调用它,而不是在原生 DOM 对象上调用它。简单的解决方案是创建一个 jquery 对象:

var domElement = document.getElementById('something');
var hasSomeClass = $(domElement).hasClass('some-class');

当然,如果您已经在使用 jQuery,为什么不这样做:

var $images = $('img');
于 2013-10-24T23:59:46.350 回答
1

在jQuery中:

$("img").each(function(){
   if($(this).hasClass("className")){

   }
});
于 2013-10-25T00:04:30.450 回答
0

这是因为 jQuery 元素不同于 HTML 元素。jQuery 元素是特殊的 jQuery 对象,您只能在这些对象上运行 jQuery 方法。但是,您可以像这样将元素转换为 jQuery 对象:

var images=document.getElementsByTagName('img');
var jQueryImages=$(images)

但您也可以像这样直接使用 jQuery 进行操作:

var jQueryImages=$('img');

最后一件事,该函数不返回HTMLImageElement. 它返回 a NodeList,因为文档中可能有多个img元素。ANodeList本质上是一个元素数组。

于 2013-10-25T00:03:11.133 回答