即使变量与数组匹配,$ .inArray()也返回false -1

时间:2014-07-09 17:11:56

标签: javascript jquery arrays

我试图看到我的currentMedia变量(在DOM中)可以在我的数组media中找到,然后返回i,它应该是0而不是-1。

如果我运行console.log(media[0]);console.log(currentMedia);结果相同但您会注意到chrome中的颜色media[0]看起来像实时html,其中currentMedia会返回确切的结果相同的文字,但灰色。

我的HTML看起来像这样:

<div class="slideshow">
    <div class="media">
    <img src="http://placehold.it/112x112" style="opacity: 0;">
    </div>
</div>

这是指向令人困惑的代码图片的链接 - http://imgur.com/PBBNuoy您会看到console.logmedia[0]的{​​{1}}值看起来相同但是currentMedia函数不会返回currentImageKey();,而是返回0

-1

这应该返回0

function currentImageKey(i) {
    currentMedia = $(".media").children()[0].outerHTML
    i = $.inArray(currentMedia, media)
    return i;
};

所有这一切都回归

function currentImageKey(i) { currentMedia = $(".media").children()[0].outerHTML i = $.inArray(currentMedia, media) return i; }; currentImageKey(); if (currentMedia === $(".media").children()[0].outerHTML ) { console.log("equal"); } if(jQuery.inArray(currentMedia, media) != -1) { console.log("is in array"); } else { console.log("is NOT in array"); } equalis NOT in array

1 个答案:

答案 0 :(得分:0)

正如评论中所述:

运行$ .inArray w / o .outerHTML将导致对阵列的正确评估。

.outerHTML是JS类型的String属性。

“元素DOM接口的outerHTML属性获取描述元素及其后代的序列化HTML片段。可以设置为使用从给定字符串解析的节点替换元素。”

请参阅 - https://developer.mozilla.org/en-US/docs/Web/API/element.outerHTML

function currentImageKey(i) {
currentMedia = $(".media").children()[0]
i = $.inArray(currentMedia, media)
return i;
};

currentImageKey();

这将返回与数组进行比较的正确值。