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