以下是我一直在处理的网站:http://jaakkouusitalo.fi/new正如您所看到的那样,有四个彩色方块,所有这些都有不同的类别。
我想简化它,制作if和else语句。我缺乏知道该怎么做的技能,所以我决定直接在这里问。
这是我的html文件:
<section>
<h2>Color combination should be following:</h2>
<ul class="colors">
<li class="color-img1">
<img src="img/1.png" />
<div class="caption1">
#FFD800
</div>
</li>
<li class="color-img2">
<img src="img/2.png" />
<div class="caption2">
</div>
</li>
<li class="color-img3">
<img src="img/3.png" />
<div class="caption3">
#587498
</div>
</li>
<li class="color-img4">
<img src="img/4.png" />
<div class="caption4">
#E86850
</div>
</li>
</ul>
</section>
目前我正在处理我的jQuery:
$( document ).ready(function() {
$('.caption1, .caption2, .caption3, .caption4').hide();
$(".color-img1").hover(function() {
$('.caption1').show();
});
$(".color-img2").hover(function() {
$('.caption2').show();
});
$(".color-img3").hover(function() {
$('.caption3').show();
});
$(".color-img4").hover(function() {
$('.caption4').show();
});
});
我认为有更好的方法来做到这一点。我只是不知道如何。
答案 0 :(得分:2)
执行此操作的正确方法是使用CSS,我已在下面列出了CSS解决方案。但首先会回答javascript解决方案。
请参阅JS小提琴的结果:
Javascript解决方案
简化您的HTML只使用.caption而不是.caption1,2,3,4和.color-img而不是1,2,3,4:
<section>
<h2>Color combination should be following:</h2>
<ul class="colors">
<li class="color-img">
<img src="img/1.png" />
<div class="caption">
#FFD800
</div>
</li>
<li class="color-img">
<img src="img/2.png" />
<div class="caption">
#FFD800
</div>
</li>
<li class="color-img">
<img src="img/3.png" />
<div class="caption">
#587498
</div>
</li>
<li class="color-img">
<img src="img/4.png" />
<div class="caption">
#E86850
</div>
</li>
</ul>
</section>
并像这样更改你的javascript - 评论内联解释它的作用:
$( document ).ready(function() {
$('.caption').hide();
//use .on (and mouseover) syntax over .hover
$(".color-img").on("mouseover", function () {
//find child element .caption, and show
$(this).find('.caption').show();
});
});
结果:http://jsfiddle.net/Nh8xM/1/
CSS解决方案
根据javascript版本使用简化的HTML,但在CSS中你需要做的就是:
.caption {
display:none;
}
.colors li:hover .caption {
display:block;
}
答案 1 :(得分:0)
使用:
$(".color-img1,.color-img2,.color-img3,.color-img4").hover(function() {
idnum=$(this).attr('class').replace( /^\D+/g, '').replace(/[^a-zA-Z ]/g, "")
class="caption"+idnum;
$('.'+class).show();
});
答案 2 :(得分:0)
第一步
使用CSS使用display:none;
隐藏.captionX,然后您将不需要原始隐藏声明。
第二步
使用单个绑定$(".colors img").hover(function() {}
,然后使用$(this).parent("li").children(".caption").show()
或类似的东西显示与“悬停”的对象相关的标题。
答案 3 :(得分:0)
简单地:
$("ul.colors").children('li').hover(function() {
$(this).children('div[class^="caption"]').show();
});
当您将鼠标悬停在li
的{{1}}个孩子身上时,会激活此悬停功能。然后在ul.colors
的{{1}}子元素上调用show()
,其中div
类可能以“标题”开头。
或者,您可以使用jQuery的li
方法:
on()
答案 4 :(得分:0)
您可以在所有按钮上使用相同的类来简化,请参阅:
如您所见,您可以使用两个或多个按空格分隔的类名,如示例所示:class="color-img color-img1"
color-img
负责常见行为(适用于所有按钮的行为),
color-img1
负责单按钮行为(例如按钮颜色)
<section>
<h2>Color combination should be following:</h2>
<ul class="colors">
<li class="color-img color-img1">
<img src="img/1.png" />
<div class="caption">
#FFD800
</div>
</li>
<li class="color-img color-img2">
<img src="img/2.png" />
<div class="caption">
HERE?
</div>
</li>
<li class="color-img color-img3">
<img src="img/3.png" />
<div class="caption">
#587498
</div>
</li>
<li class="color-img color-img4">
<img src="img/4.png" />
<div class="caption">
#E86850
</div>
</li>
</ul>
</section>
这样代码简化为:
$(function() {
$('.caption').hide();
$(".color-img").hover(
function() {
$(this).find('.caption').show();
},
function() {
// uncomment this if you also want to hide it at rollout
// $(this).find('.caption').hide();
}
);
});