.attr('class')在jQuery()上是未定义的

时间:2012-03-05 23:03:53

标签: jquery undefined

我在wordpress主题中遇到了jquery函数的问题。我已经完全使用了这个函数并且它有效。该函数返回通过wordpress uploader上传的Image的ID。

以下是相关部分:

// extract the img-ID from class attribute
var jt = jQuery('img', html).attr('class');
alert(html);
alert(jt);
j1 = jt.split(' ');

这两个警报只是要弄明白,会发生什么。 alert(html)返回:

<img src="http://www.xyz.com/files/2012/03/stage.jpg" alt="" title="" width="1000" height="371" class="alignnone size-full wp-image-6" />

但是alert(jt)返回“undefined”。

任何想法?如果你能提供帮助,那就太棒了。

8 个答案:

答案 0 :(得分:7)

您对html变量使用context参数是不正确的。根据{{​​3}},该上下文参数应该是DOM元素,文档或jQuery对象。它不能是HTML字符串。

如果,你拥有的是一个字符串,并且你想将它变成一个DOM对象,你可以通过多种方式实现。

此代码将从您拥有的html字符串创建一个DOM对象,然后从该DOM对象中检索该类属性。

var html = '<img src="http://www.xyz.com/files/2012/03/stage.jpg" alt="" title="" width="1000" height="371" class="alignnone size-full wp-image-6" />';
var item = jQuery(html);
var jt = item.attr('class');
alert(jt);
j1 = jt.split(' ');

您可以在此处查看:jQuery documentation

答案 1 :(得分:2)

你的问题在这里:

jQuery('img', html)

上下文为html,显然html是一张图片,因此您在img内找不到img

修改
如果html<img src="http://www.xyz.com/files/2012/03/stage.jpg" alt="" title="" width="1000" height="371" class="alignnone size-full wp-image-6" />,那么你可以像这样抓住这个类:

var klass = $(html).attr('class');

// You could do this to create an array of all classes
var klasses = $(html).attr('class').match(/\S+/g);

答案 2 :(得分:1)

您提供的上下文变量html当时未定义,您应该将其定义为图像所属的DOM元素。

$(document).ready( function() {
// extract the img-ID from class attribute
var html = jQuery('.some-class');
var jt = jQuery('img', html).attr('class');
alert(html);
alert(jt);
j1 = jt.split(' ');
});

http://api.jquery.com/jQuery/

http://jsfiddle.net/ssUhJ/

答案 3 :(得分:0)

attr('class')确实有用。可能你的上下文var(html)只是未定义。

顺便说一句,要存储数据,使用HTML5 custom data- attributes代替类是有意义的。

答案 4 :(得分:0)

当拥有给定的html字符串时,这通常可以起作用:

 $(html).attr('class');

答案 5 :(得分:0)

没有html

var jt = jQuery('img').attr('class');
alert(jt);
j1 = jt.split(' ');
alert(j1);

答案 6 :(得分:0)

问题出在var jt = jQuery('img', html),来自jquery document,第二个参数是jquery对象的上下文。检查http://jsfiddle.net/hYKnd/上已修改的程序。

答案 7 :(得分:-1)

从jquery 1.6开始(见docs for .attr),.attr从返回空字符串转为返回undefined

打开此jsfiddle http://jsfiddle.net/QVqXC/并更改加载的jquery版本,并查看输出消息的更改方式。