![](/img/trans.png)
[英]jQuery hover(): mouseout does not fire when using overflow:auto (with scrollbars)
[英]How to change color of element on hover and remove it when mouseout using jquery?
我发现以下代码片段(悬停时颜色随机更改),但是现在有mouseout状态–我希望链接颜色在不悬停链接时更改为其原始状态。
谁能帮我这个?
$(document).ready(function() {
$( "p" ).mouseover(function() {
$(this).css("color",getRandomColor());
});
function getRandomColor () {
var letters = '0123456789ABCDEF'.split('');
var color = '#';
for (var i = 0; i < 6; i++) {
color += letters[Math.floor(Math.random() * 16)];
}
return color;
}
})
您可以使用mouseout
...
$( "p" ).mouseleave(function() {
$(this).css("color","#000");
});
小提琴: https : //jsfiddle.net/99upf1jz/1/
当鼠标指针从链接中移出时,请使用mouseleave
来应用颜色。 只需将#000
更改为您选择的任何颜色即可。
$(document).ready(function() {
$( "p" ).mouseover(function() {
$(this).css("color",getRandomColor());
});
$("p").mouseleave(function(){
$(this).css("color","#000");
});
function getRandomColor () {
var letters = '0123456789ABCDEF'.split('');
var color = '#';
for (var i = 0; i < 6; i++) {
color += letters[Math.floor(Math.random() * 16)];
}
return color;
}
})
与mouseout
相比, mouseleave
对于您的要求似乎是更可靠的解决方案。
请访问此网站进行比较: http : //www.w3schools.com/jquery/tryit.asp? filename= tryjquery_event_mouseleave_mouseout
您可以在更改变量之前将元素的颜色存储在变量中,并在鼠标悬停时将存储的颜色设置为元素。
var color;
$( "p" ).mouseover(function() {
color = $(this).css("color");
$(this).css("color", getRandomColor());
}).mouseout(function(){
$(this).css("color", color);
});
var color; $( "p" ).hover(function() { color = $(this).css("color"); $(this).css("color", getRandomColor()); }, function(){ $(this).css("color", color); }); function getRandomColor () { var letters = '0123456789ABCDEF'.split(''); var color = '#'; for (var i = 0; i < 6; i++) { color += letters[Math.floor(Math.random() * 16)]; } return color; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <p>test</p> <p>test1</p>
只需在您的$(“ p” .mouseover()之后添加此代码...
$( "p" ).mouseout(function() {
$(this).css("color","#222222");
});
而不是#222222,而是将您希望使用的任何颜色设置为原始颜色。
mouseleave事件的工作原理与mouseover事件完全一样。 您可以简单地在前者之后添加它,如下所示:
$( "p" ).mouseover(function() {
$(this).css("color",getRandomColor());
}).mouseleave(function() {
$(this).css("color", "black");
});
https://jsfiddle.net/McNetic/99upf1jz/2/
如果您确实要恢复“原始”颜色(不管它是什么颜色),则必须先保存它。 可以使用每个属性的数据元素来完成(如其他答案所建议的全局变量不会将每个元素恢复为各自的颜色):
$( "p" ).mouseover(function() {
$(this).data("original-color", $(this).css("color")).css("color",getRandomColor());
}).mouseleave(function() {
$(this).css("color", $(this).data("original-color"));
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.