为什么我不能在对象HTMLImageElement上使用.hasClass(value)方法?

时间:2013-10-24 23:57:59

标签: javascript jquery html dom

我正在使用JavaScript从我的HTML中检索图像,其代码如下:

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

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

3 个答案:

答案 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本质上是一个元素数组。