jquery-inArray总是返回false,数组是从jquery.get()创建的



我正在获取div内部的所有图像。

var favImages = $('#divPlacesILove img').get();

我正在检查tagImage元素是否在数组中。

当它不应该返回-1时,它总是返回-1。

alert($.inArray($(tagImage).attr('src'), favImages));

您可能正在寻找.map():

var favImages = $('#divPlacesILove img').map(function() {
    return this.src;
}).get();

现在favImages将是src属性的数组。

$('#divPlacesILove img').get()

这将返回一个DOM元素数组。

$.inArray($(tagImage).attr('src'), favImages))

您正在DOM元素数组中查找字符串,因此它找不到任何内容。

为什么在这里使用inArray?如果您想查看jQuery对象是否包含元素use,.is:

$('#divPlacesILove img').is(tagImage); // true

.filter:

$('#divPlacesILove img').filter(function(){
    return this === tagImage; // or $(this).prop('src') === $(tagImage).prop('src')
})

数组中有DOM元素,您正在与href进行比较!!

若你们坚持使用相同的函数集,你们可以试试这个。。

var favImages = $('#divPlacesILove img').get();
alert($.inArray($(tagImage)[0], favImages));

现在favImages是图像阵列,$(tagImage)[0]是您的标签图像。。

最新更新