Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jquery动画/mouseover/mouseout不工作_Jquery - Fatal编程技术网

jquery动画/mouseover/mouseout不工作

jquery动画/mouseover/mouseout不工作,jquery,Jquery,当我将鼠标悬停在具有“spring”类的元素上时,我希望它转换为另一种颜色。我正在使用jQuery进行此操作,但似乎无法使其正常工作。有人能帮我解释一下吗?这是我到目前为止所拥有的一把小提琴 提前谢谢 $('.spring').mouseover(function () { $('.spring').animate({ 'backgroundColor' : '#CCCCCC' }).mouseout(function () { $('.spring')

当我将鼠标悬停在具有“spring”类的元素上时,我希望它转换为另一种颜色。我正在使用jQuery进行此操作,但似乎无法使其正常工作。有人能帮我解释一下吗?这是我到目前为止所拥有的一把小提琴

提前谢谢

$('.spring').mouseover(function () {
    $('.spring').animate({
        'backgroundColor' : '#CCCCCC'
    }).mouseout(function () {
    $('.spring').animate({
        'backgroundColor' : '#000000'
    });
});

这是我到目前为止为jQuery编写的代码

尝试使用
悬停
进行此操作:

$('.spring').hover(function () {
    $('.spring').animate({
        'backgroundColor' : '#CCCCCC'
    });
}, function () {
    $('.spring').animate({
        'backgroundColor' : '#000000'
    });
});

我已经修改了你的小提琴

如果仍然需要mouseover和mouseout事件,那么可以使用下面的代码段。 $(文档).ready(函数(){

此外,您还需要Jquery UI来设置backgroundColor属性的动画


如果有帮助,请将其标记为答案。

如果我理解正确,您希望框变为红色,直到有人悬停,然后在悬停时变为灰色,然后变为黑色而不是红色

我更喜欢让CSS做尽可能多的工作,因为它通常处理速度更快,更容易使用,特别是对于如此简单的东西。CSS动画在大多数情况下可以取代jQuery动画功能。jQuery只需要设置一个标志,表明框已悬停,然后就不需要了

jQuery:

我为鼠标盖使用了更新的“开”功能,这样你就可以在不需要的时候轻松地关闭它。这基本上是在框第一次悬停时设置一个类

$(document).ready(function () {

    $('.spring').on('mouseover', function () {
        $('.spring')
         .addClass('touched')
         .off('mouseover');
    });

});
CSS:

我发现动画比jqueryanimate更平滑,可以通过CSS转换进行更精细的控制。我们将悬停状态设置为灰色,将.hover类设置为黑色,CSS中的所有内容都在那里

.spring {
    background: red;
    width: 100px;
    height: 30px;
    transition: background 0.5s ease
}
.spring:hover, .spring.touched:hover {
    background: #ccc;
}
.spring.touched {
    background: #000;
}
这使您可以轻松控制外观的各个方面,而无需将繁琐的css代码添加到jQuery中

只有一个问题在使用它之前,请检查表中的CSS动画支持:
我通常认为转换是“好的”。项目,而不是基本的,所以我不太担心IE9和以下版本不会看到转换。它们仍然可以很好地进行颜色更改,因此没有丢失任何功能。javascript中没有所有垃圾的优点是值得的。

另一方面,小提琴没有包含jQuery…你的JSFIDLE有错误,他说re是一个更新的(还没有做你想做的事情)我更新了fiddle来做你想做的事,看看我的回答你提出了一个关于过渡的引人注目的观点,我完全理解。我想做过渡,并排除为IE8和以下所有一起开发!但是,因为这个网站是为一所仍然使用IE8的小学,它教孩子们关于se的差异ASON及其行为方式。在IE8(该死的学校和他们的IE8)中,一切都必须完美运行,这是完全可以理解的。这就是为什么我在最后提出警告。看起来可能有一个可行的过渡方案,但坚持使用jQuery也是有意义的。
 $('.spring').mouseover(function () {
        $('.spring').animate({
            'backgroundColor': '#CCCCCC'
        })
    })
.mouseout(
    function () {
        $('.spring').animate({
            'backgroundColor': '#000000'
        });
    });
});
$(document).ready(function () {

    $('.spring').on('mouseover', function () {
        $('.spring')
         .addClass('touched')
         .off('mouseover');
    });

});
.spring {
    background: red;
    width: 100px;
    height: 30px;
    transition: background 0.5s ease
}
.spring:hover, .spring.touched:hover {
    background: #ccc;
}
.spring.touched {
    background: #000;
}