javascript - 如何使用 jQuery 将多个图像的切片与另一个图像切换

标签 javascript jquery html css

我正在尝试做到这一点,以便在单击每个图像切片时,它会更改为不同的图片(即该图片后面的图片)。我也试图让它也切换。

这是我目前所拥有的:

HTML:

    <div id="main-wrapper">
        <div id="first-wrapper">
            <img src="img/cat0.png" cat-pic-src="cat0.png" alt="cat picture 0">
            <img src="img/cat1.png" cat-pic-src="cat1.png" alt="cat picture 1">
            <img src="img/cat2.png" cat-pic-src="cat2.png" alt="cat picture 2">
            <img src="img/cat3.png" cat-pic-src="cat3.png" alt="cat picture 3">
            <img src="img/cat4.png" cat-pic-src="cat4.png" alt="cat picture 4">
        </div>
        <div id="second-wrapper">
            <img src="img/ninja0.png" ninja-pic-src="ninja0.png" alt="ninja picture 0">
            <img src="img/ninja1.png" ninja-pic-src="ninja1.png" alt="ninja picture 1">
            <img src="img/ninja2.png" ninja-pic-src="ninja2.png" alt="ninja picture 2">
            <img src="img/ninja3.png" ninja-pic-src="ninja3.png" alt="ninja picture 3">
            <img src="img/ninja4.png" ninja-pic-src="ninja4.png" alt="ninja picture 4">
        </div>
    </div>

CSS

#main-wrapper {
 width: 970px;
 margin: 0 auto;
}

img {
 display: inline-block;
 width: 500px;
 margin: 2px 200px;
}


#first-wrapper {
 position: absolute;
 display: inline-block;
}

#second-wrapper {
 position: absolute;
 display: inline-block; 
}

jQuery

$(document).ready(function(){

$('img').click(function(){
    $(this).toggle().css('z-index', '10');

    });

});

它没有像我预期的那样工作,当我单击图像时,我单击的每个 block 都消失了。

例如,如果我点击图片“cat0.png”,它将替换为“ninja0.png”(取决于我点击的图片),如果我点击图片“cat1.png” "它将替换为 "ninja2.png"等等。如果我也能够切换此操作,我会喜欢它。

请记住,每张图片都是堆叠在一起的。

最佳答案

这是你想要做的吗,正如你所说你的意图不是很清楚?

还有其他(可能更好)的方法可以做到这一点。

var mainWrapper = document.getElementById('main-wrapper'),
    catImgs = [].slice.call(mainWrapper.getElementsByClassName('cat')),
    ninjaImgs = [].slice.call(mainWrapper.getElementsByClassName('ninja'));

mainWrapper.addEventListener('click', function (evt) {
    var target = evt.target,
        classList = target.classList;

    if (classList.contains('cat')) {
        classList.toggle('hidden');
        ninjaImgs[catImgs.indexOf(target)].classList.toggle('hidden');
    } else if (classList.contains('ninja')) {
        classList.toggle('hidden');
        catImgs[ninjaImgs.indexOf(target)].classList.toggle('hidden');
    }
}, false);
#main-wrapper > .cat,.ninja {
    width: 100px;
    height: 100px;
    display: block;
}
.cat {
    position: relative;
}
.ninja {
    position: relative;
    top: -500px;
}
.hidden {
    visibility: hidden;
}
<div id="main-wrapper">
    <img class="cat" src="http://lorempixel.com/100/100/animals/1" alt="cat picture 0">
    <img class="cat" src="http://lorempixel.com/100/100/animals/2" alt="cat picture 1">
    <img class="cat" src="http://lorempixel.com/100/100/animals/3" alt="cat picture 2">
    <img class="cat" src="http://lorempixel.com/100/100/animals/4" alt="cat picture 3">
    <img class="cat" src="http://lorempixel.com/100/100/animals/5" alt="cat picture 4">
    <img class="ninja hidden" src="http://lorempixel.com/100/100/sports/1" alt="ninja picture 0">
    <img class="ninja hidden" src="http://lorempixel.com/100/100/sports/2" alt="ninja picture 1">
    <img class="ninja hidden" src="http://lorempixel.com/100/100/sports/3" alt="ninja picture 2">
    <img class="ninja hidden" src="http://lorempixel.com/100/100/sports/4" alt="ninja picture 3">
    <img class="ninja hidden" src="http://lorempixel.com/100/100/sports/5" alt="ninja picture 4">
</div>

更新:直接转换为 jQuery

var $mainWrapper = $('#main-wrapper');
    $catImgs = $mainWrapper.find('.cat'),
    $ninjaImgs = $mainWrapper.find('.ninja');

$mainWrapper.on('click', 'img', function (evt) {
    var target = evt.target,
        $target = $(target);

    if ($target.hasClass('cat')) {
        $target.toggleClass('hidden');
        $($ninjaImgs[$.inArray(target, $catImgs)]).toggleClass('hidden');
    } else if ($target.hasClass('ninja')) {
        $target.toggleClass('hidden');
        $($catImgs[$.inArray(target, $ninjaImgs)]).toggleClass('hidden');
    }
});
#main-wrapper > .cat,.ninja {
    width: 100px;
    height: 100px;
    display: block;
}
.cat {
    position: relative;
}
.ninja {
    position: relative;
    top: -500px;
}
.hidden {
    visibility: hidden;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<div id="main-wrapper">
    <img class="cat" src="http://lorempixel.com/100/100/animals/1" alt="cat picture 0">
    <img class="cat" src="http://lorempixel.com/100/100/animals/2" alt="cat picture 1">
    <img class="cat" src="http://lorempixel.com/100/100/animals/3" alt="cat picture 2">
    <img class="cat" src="http://lorempixel.com/100/100/animals/4" alt="cat picture 3">
    <img class="cat" src="http://lorempixel.com/100/100/animals/5" alt="cat picture 4">
    <img class="ninja hidden" src="http://lorempixel.com/100/100/sports/1" alt="ninja picture 0">
    <img class="ninja hidden" src="http://lorempixel.com/100/100/sports/2" alt="ninja picture 1">
    <img class="ninja hidden" src="http://lorempixel.com/100/100/sports/3" alt="ninja picture 2">
    <img class="ninja hidden" src="http://lorempixel.com/100/100/sports/4" alt="ninja picture 3">
    <img class="ninja hidden" src="http://lorempixel.com/100/100/sports/5" alt="ninja picture 4">
</div>

关于javascript - 如何使用 jQuery 将多个图像的切片与另一个图像切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30839291/

相关文章:

javascript - 当我点击按钮时,我的输入标签变空

javascript - 如何重新加载 AngularJS 部分模板?

javascript - html5 audioElement 的多个实例,可以用 $(this) 完成吗?

html - 带间距的CSS垂直书写错误

javascript - 如何根据 html 中的另一个选择选项操作选择选项?

javascript - 如何在两点之间创建中点?

javascript - 如何过滤 Angular 垫片碎片

javascript - 如何在 javascript 中为字符串中的数字添加下划线?

jquery - 从 <a> 标签 WordPress 中删除类属性

jquery - “搜索”按钮可激活自动完成功能