如何在单击元素后保持悬停样式? (jQuery)
How to keep hover styling even after an element is clicked? (jQuery)
我有四个具有悬停样式的按钮元素(从 0.2 不透明度到 1 不透明度)。然后,我使用 jQuery 以便在单击特定按钮后,它的不透明度变为 1(有点标记它是被单击的按钮),而其他未单击的按钮的不透明度为 0.2。
但是,在单击之后,由于我强制每个未单击的按钮都具有 0.2 的不透明度,因此 css 悬停样式不再有效。
我在下面创建了一个代码笔演示:
jQuery:
var $box_each = $(".boxes img");
$box_each.click(function() {
$box_each.css("opacity", "0.2");
$(this).css("opacity", "1");
});
http://codepen.io/aguerrero/pen/Bjzjrx
我该如何解决这个问题,以便在任何给定时间只有一个不透明度为 1 的元素时保留所有悬停样式?
你应该试试这个。
var $box_each = $(".boxes img");
$box_each.click(function() {
if ($(this).hasClass("clicked")) {
$(this).addClass("unclicked");
$(this).removeClass("clicked");
} else {
$(this).removeClass("unclicked");
$(this).addClass("clicked");
$box_each.css("opacity", "0.2");
$(this).css("opacity", "1");
}
});
.boxes img {
opacity: 0.2;
}
.boxes img:hover {
opacity: 1;
}
.clicked {
opacity: 1 !important;
}
.unclicked {
opacity: 0.2 !important;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
<div class="boxes">
<img src="http://lorempixel.com/50/50/">
<img src="http://lorempixel.com/50/50/">
<img src="http://lorempixel.com/50/50/">
<img src="http://lorempixel.com/50/50/">
</div>
您的悬停效果在单击后不起作用,因为您在 Jquery 中提供了内联样式。
您可以执行以下操作:
var $box_each = $(".boxes img");
$box_each.click(function() {
$box_each.removeClass('active');
$(this).addClass('active');
});
Css:
.boxes img {
opacity: 0.2;
}
.boxes img:hover {
opacity: 1;
}
.boxes img.active {
opacity: 1;
}
如果你想保留不透明效果以便申请多张图片,我想你可以试试这个。
HTML:
<div id="boxes">
<img class="boxes-normal" src="http://lorempixel.com/50/50/">
<img class="boxes-normal" src="http://lorempixel.com/50/50/">
<img class="boxes-normal" src="http://lorempixel.com/50/50/">
<img class="boxes-normal" src="http://lorempixel.com/50/50/">
</div>
css:
.boxes-normal{
opacity: 0.2;
}
.boxes-normal:hover {
opacity: 1;
}
.boxes-opaque{
opacity: 1;
}
JavaScript:
var $box_each = $("#boxes img");
$box_each.click(function() {
if($(this).hasClass('boxes-normal')){
$(this).removeClass('boxes-normal');
$(this).addClass('boxes-opaque');
} else if($(this).hasClass('boxes-opaque')){
$(this).removeClass('boxes-opaque');
$(this).addClass('boxes-normal');
}
});
希望这对您有所帮助..
我有四个具有悬停样式的按钮元素(从 0.2 不透明度到 1 不透明度)。然后,我使用 jQuery 以便在单击特定按钮后,它的不透明度变为 1(有点标记它是被单击的按钮),而其他未单击的按钮的不透明度为 0.2。
但是,在单击之后,由于我强制每个未单击的按钮都具有 0.2 的不透明度,因此 css 悬停样式不再有效。
我在下面创建了一个代码笔演示:
jQuery:
var $box_each = $(".boxes img");
$box_each.click(function() {
$box_each.css("opacity", "0.2");
$(this).css("opacity", "1");
});
http://codepen.io/aguerrero/pen/Bjzjrx
我该如何解决这个问题,以便在任何给定时间只有一个不透明度为 1 的元素时保留所有悬停样式?
你应该试试这个。
var $box_each = $(".boxes img");
$box_each.click(function() {
if ($(this).hasClass("clicked")) {
$(this).addClass("unclicked");
$(this).removeClass("clicked");
} else {
$(this).removeClass("unclicked");
$(this).addClass("clicked");
$box_each.css("opacity", "0.2");
$(this).css("opacity", "1");
}
});
.boxes img {
opacity: 0.2;
}
.boxes img:hover {
opacity: 1;
}
.clicked {
opacity: 1 !important;
}
.unclicked {
opacity: 0.2 !important;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script>
<div class="boxes">
<img src="http://lorempixel.com/50/50/">
<img src="http://lorempixel.com/50/50/">
<img src="http://lorempixel.com/50/50/">
<img src="http://lorempixel.com/50/50/">
</div>
您的悬停效果在单击后不起作用,因为您在 Jquery 中提供了内联样式。
您可以执行以下操作:
var $box_each = $(".boxes img");
$box_each.click(function() {
$box_each.removeClass('active');
$(this).addClass('active');
});
Css:
.boxes img {
opacity: 0.2;
}
.boxes img:hover {
opacity: 1;
}
.boxes img.active {
opacity: 1;
}
如果你想保留不透明效果以便申请多张图片,我想你可以试试这个。
HTML:
<div id="boxes">
<img class="boxes-normal" src="http://lorempixel.com/50/50/">
<img class="boxes-normal" src="http://lorempixel.com/50/50/">
<img class="boxes-normal" src="http://lorempixel.com/50/50/">
<img class="boxes-normal" src="http://lorempixel.com/50/50/">
</div>
css:
.boxes-normal{
opacity: 0.2;
}
.boxes-normal:hover {
opacity: 1;
}
.boxes-opaque{
opacity: 1;
}
JavaScript:
var $box_each = $("#boxes img");
$box_each.click(function() {
if($(this).hasClass('boxes-normal')){
$(this).removeClass('boxes-normal');
$(this).addClass('boxes-opaque');
} else if($(this).hasClass('boxes-opaque')){
$(this).removeClass('boxes-opaque');
$(this).addClass('boxes-normal');
}
});
希望这对您有所帮助..