我想将鼠标悬停在一个元素上并让它为该一个悬停事件中的两个元素设置动画,但我的jQuery代码存在问题。
(我正在点击一个Drupal视图,但我在常规的Stack Exchange上发布了这个,而不是Drupal的答案,因为我认为问题更可能是我的jQuery编码而不是Drupal)
页面设置的背景:
这就是我想要实现的目标:
目前发生了什么:
脚本如下:
(function ($) {
$(document).ready(function(){
var $container = $(".views-row");
$container.find(".views-field-field-teaser-image").hover(
function() {
$(this).stop().animate({"opacity": "0", "-ms-filter": "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"},1000);
$container.find(".views-field-title").stop().animate({"background": "rgba(0,0,0,0.4)"},400)}
function() {
$(this).stop().animate({"opacity": "1", "-ms-filter": "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"},1000)
$container.find(".views-field-title").stop().animate({"background": "rgba(0,0,0,0)"},400)}
);
});
})(jQuery);
答案 0 :(得分:0)
回答我自己的问题:
问题如下:
animate()
不支持CSS速记(例如background:
)此外:
修正代码如下:
(function ($) {
$(document).ready(function(){
var $container = $(".views-row");
$container.find(".views-field-field-teaser-image").hover(
function() {$(this).stop().animate({"opacity": "0", "-ms-filter": "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"},1000),
$(this).closest(".views-row").find(".views-field-title").stop().animate({backgroundColor: "rgba(0,0,0,0.4)"},1000)},
function() {$(this).stop().animate({"opacity": "1", "-ms-filter": "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"},1000),
$(this).closest(".views-row").find(".views-field-title").stop().animate({backgroundColor: "rgba(0,0,0,0)"},1000)}
);
});
})(jQuery);
答案 1 :(得分:0)
2件事,你在悬停中2个输入和输出处理函数之间缺少一个逗号,而动画背景颜色的属性是“backgroundColor”,而不是“background”。我也认为你不需要使用find()并且可以使用$()直接访问元素。
以下是在FF&假设标题div的区域小于图像区域,以便可以在标题div未覆盖的图像区域上检测到悬停,Chrome可以执行您所描述的操作。
<html>
<head>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="http://code.jquery.com/ui/1.11.3/jquery-ui.js"></script>
<style>
.views-field-title {position:absolute; top:0; z-index: 10; width:100px; height:20px; color:blue; background-color:yellow;}
.views-field-field-teaser-image {position:absolute; top:0; z-index: 5}
.views-field-field-reveal-image {position:absolute; top:0; z-index: 1}
</style>
</head>
<body>
<div class="views-row">
<div class="views-field-title">TITLE</div>
<img class="views-field-field-teaser-image" src="img/teaser.png">
<img class="views-field-field-reveal-image" src="img/reveal.png">
</div>
<script>
(function ($) {
$(document).ready(function(){
var $container = $(".views-row");
$container.find(".views-field-field-teaser-image").hover(
function() {
$(this).stop().animate({"opacity": "0", "-ms-filter": "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"},1000);
$(".views-field-title").stop().animate({"backgroundColor": "rgba(0,0,0,0.4)"},400)
}, function() {
$(this).stop().animate({"opacity": "1", "-ms-filter": "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"},1000);
$(".views-field-title").stop().animate({"backgroundColor": "rgba(0,0,0,0)"},400);
}
);
});
})(jQuery);
</script>
</body>
</html>