无法在jquery中访问对象(prevObject?)

时间:2015-06-08 13:07:14

标签: javascript jquery html

我的WP插件中的一个函数只是随机(据我所知)停止工作。

以下是有问题的代码:

window.send_to_editor = function(html) {
        var classes = jQuery('img',html).attr('class');
        var items = classes.split(" ");
        ... more stuff here
}

我已经确认 html 变量确实是 img html标记。这是当我执行对象的console.log时显示的firebug( console.log(jQuery(' img',html)); ):

Object[]
context -> undefined
jquery -> "1.11.2"
length -> 0
prevObject -> Object[img.alignnone.size-full.wp-image-1234 name.jpg]

它显示的错误是 类未定义

我认为我得到的对象存在问题,但最近这种做法很常见,我不知道网站上有任何可能造成这种情况的变化。

我很感激您的任何意见。

编辑:

更多信息。这种情况发生在两个应该是无关的插件(由不同的人制作)。在将图像上传到服务器(或选择以前上传的图片)后,您会尝试将其插入帖子中。

正如我之前所说的那样,这个错误突然出现了,它几天前就像预期的那样工作了。从那时起,我唯一可以想到的就是域名,但我无法看到它是如何相关的。

2 个答案:

答案 0 :(得分:2)

jQuery选择器始终返回jQuery object,但当length0时,找不到与您提供的选择器匹配的元素。在您的示例中,您已确认未选择任何内容,因为jQuery对象的length0。检查是否选择了这样的元素:

var $els = jQuery('img',html),
    classes;
if ($els.length) {
    classes = $els.attr("class");
}

请记住,您的DOM查询受限于您传入的html参数。如果您只是想在页面上找到图像,请执行以下操作:var $els = jQuery('img');

答案 1 :(得分:1)

我终于设法解决了这个问题;关键是使用htmljQuery.parseHTML()字符串变量解析为正确的HTML。感谢所有帮助过的人!