检查数组是否包含某个字符串,然后 select 该项目

Check if array contains certain string, then select that item

好吧,这听起来可能很模糊,但我会尽力解释。

我有一张图片,我用 .attr('src') 函数收集了它的来源。此图像是其他 5 张图像之一,都在同一 div 中。到目前为止,我收集了两件事:

  1. var src,其中包含我点击的图像的url。
  2. var 数组,包含 div.
  3. 中所有图像的数组

这里是 HTML 结构:

<div class="images">
 <img src="path1" />
 <img src="path2" />
 <img src="path3" />
 <img src="path4" />
 <img src="path5" />
</div>

想象一下,我点击了第三张图片。变量 'src' 将包含值 'path3'。我希望,当我单击页面底部的箭头图标时,该值将切换为 'path2',数组中的前一项。

我该怎么做?

假设您的变量 srcarray:

var index = array.findIndex(function(img) {
    return img.src === src
})

var elementYouWant = array[index - 1]

如果 index 为零,您可以添加检查,因为在这种情况下 index - 1 将是 -1,而 elementYouWant 将是 undefinedarray.length

相同

假设您的所有图像都放在同一个父 <div> 元素中,您可以使用 jQuery 的 .prev() 访问指定元素的前一个兄弟元素:

function getPrevSrc (currentSrc) {
    // Get DOM element with the given src attribute
    // could be optimized by providing a parent element
    var $currentImg = $("[src='" + currentSrc + "']");

    // Get previous sibling
    // Note that using this on the first image is an edge case,
    // so you have to handle it accordingly to your needs
    var $prevImg = $currentImg.prev();

    // Return previous src
    return $prevImg.attr("src");
}
var imageArray; //Ur images array;
var index=imageArray.indexOf(src);
if(index>0) {
  src=imageArray[index-1]; 
}

您应该尝试以下代码:

$('img').click(function() {
        alert($(this).attr('src'));
    alert($(this).prev('img').attr('data-value'));
});

您可以在这里查看:https://jsfiddle.net/xeq4yn0z/