2

我正在收集imgs:

container.find('img')

日志说这是 (console.log('img '+imgs[0]))

[对象 HTMLImageElement]

但是当我用 each() 遍历这个列表时:

            container.find('img').each(function(idx) {
                var curr = $(this);
                                    console.log('curr ' + curr);

        });

我正进入(状态:

[对象对象]

我认为这是我检查数组是否存在的另一个问题的原因:

        if (! jQuery.inArray(curr, hiddenImgs)) {
              hiddenImgs.push(curr);
            }

即使我确定该元素不在数组中,我也得到了 FALSE :/

这很疯狂。有人可以帮忙吗?

4

3 回答 3

3

首先,要获得有用的日志结果,只需直接将其记录下来,而不是将其转换为字符串:

例子:

console.log( imgs[0] );
console.log( curr );

其次,在第一种情况下,您正在记录 Image 元素,在第二种情况下,您正在记录一个 jQuery 对象:

$(this) //<-- return a jQuery object wrapping `this`, the original element is in $(this)[0]
this //<-- plain this, it's the dom element itself. I.E. HTMLImageElement
于 2012-07-28T15:43:36.533 回答
1

你得到[object Object]因为当你$(this)在你的函数中调用时,你创建了一个引用图像元素的新 jQuery 对象,并且 jquery 对象的类型是object而不是HTMLImageElement。参见jQuery( 选择器 [, context] )

该函数在找不到匹配项时inArray返回-1而不是0,因此您必须将代码更改为:

if (jQuery.inArray(curr, hiddenImgs) == -1) {
              hiddenImgs.push(curr);
            }

jQuery.inArray()

于 2012-07-28T15:44:29.543 回答
0

.each()尝试中:

console.log('curr ' + curr.get(0));

于 2012-07-28T15:46:14.660 回答