我对jQuery和学习还是比较陌生,我创建了下面的代码/脚本来满足我的需要,但是我必须为我添加的每个选择器和目标创建一个新函数,并且代码最终会变长。我打算至少有10个选择器和目标。

因此,当您将鼠标悬停在一个选择器(按钮)上时,它会向该按钮添加一个事件类(将其从其他按钮中删除),并保持打开状态,直到您选择另一个按钮,同时又切换出目标(在这种情况下为不同的img)。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script>

<style>
body {
    background:grey;
}
#terrace-fw-wrap {
    display:block;
    width:100%;
    max-width:600px;
    margin: auto;
    text-align: center;
}

#terrace-fw-wrap .content {
    display:block;
    width:100%;
}

#terrace-fw-wrap .content .img {
    display:none;
    width:100%;
}

.active-img {
    display:block !important;
    width:100% !important;
}

#terrace-fw-wrap .buttons .but {
    display:inline-block;
    width:150px;
    padding:10px;
    margin:10px;
    text-align: center;
    color:black;
    background:white;

}

#terrace-fw-wrap .buttons .but:hover {
    color:white;
    background:black;
    cursor: pointer;
}

.active-but {
    color:white !important;
    background:black !important;

}

</style>

<section id="terrace-fw-wrap">
    <section class="content">
        <img class="img img1 active-img" src="http://s9.postimg.org/oatcz7bpr/img1.jpg" />
        <img class="img img2" src="http://s9.postimg.org/6314c1xxr/img2.jpg" />
        <img class="img img3" src="http://s30.postimg.org/llqz7e7yp/img3.jpg" />
    </section>
    <div class="buttons">
        <div class="but but1">
            Button 1
        </div>
        <div class="but but2">
            Button 2
        </div>
        <div class="but but3">
            Button 3
        </div>
    </div>
</section>


<script>
$(function(){
    $('.but1').hover(function(){
      $('.img1').addClass('active-img');
      $('.img2').removeClass('active-img');
      $('.img3').removeClass('active-img');
      $('.but1').addClass('active-but');
      $('.but2').removeClass('active-but');
      $('.but3').removeClass('active-but');
    });
});

$(function(){
    $('.but2').hover(function(){
      $('.img2').addClass('active-img');
      $('.img1').removeClass('active-img');
      $('.img3').removeClass('active-img');
      $('.but2').addClass('active-but');
      $('.but1').removeClass('active-but');
      $('.but3').removeClass('active-but');
    });
});

$(function(){
    $('.but3').hover(function(){
      $('.img3').addClass('active-img');
      $('.img1').removeClass('active-img');
      $('.img2').removeClass('active-img');
      $('.but3').addClass('active-but');
      $('.but1').removeClass('active-but');
      $('.but2').removeClass('active-but');
    });
});
</script>

jsfiddle:https://jsfiddle.net/8btdeftu/

有没有一种方法可以更改它,以便我可以添加尽可能多的相应选择器和目标,而不必在脚本中添加新功能?

谢谢

最佳答案

所做的更改

的HTML

►将data-img=""添加到所有按钮,并显示相应的图像

解决方案

$(function(){
    $('.but1,.but2,.but3').hover(function(){
        $('.img').removeClass('active-img');
        var img = $(this).data('img')
        $("."+img).addClass('active-img');
        $('.but').removeClass('active-but');
        $(this).addClass('active-but');
    });
});

Demo Fiddle

10-08 04:53