jQuery重用CSS悬停?

jQuery重用CSS悬停?,jquery,css,hover,Jquery,Css,Hover,如果我有CSSp:hover{background color:yellow}like。。。如何使用jQuery做完全相同的事情?没有,没有一组复杂的函数调用和属性检测,但是如何对jQuery说这个通用浏览器内置功能呢 “快速攻击”结束问题后的注释:se@SamuelLiew的解决方案使用一行jQuery代码运行,位于 笔记 这个问题是关于重用(浏览器内置功能)的,示例代码只是一些示例 为什么我需要jQuery(而不是“纯CSS”)? 使用“纯CSS”不允许应用逻辑。示例:1)激活和停用CS

如果我有CSS
p:hover{background color:yellow}
like。。。如何使用jQuery做完全相同的事情?没有,没有一组复杂的函数调用和属性检测,但是如何对jQuery说这个通用浏览器内置功能呢


“快速攻击”结束问题后的注释:se@SamuelLiew的解决方案使用一行jQuery代码运行,位于


笔记 这个问题是关于重用(浏览器内置功能)的,示例代码只是一些示例

为什么我需要jQuery(而不是“纯CSS”)? 使用“纯CSS”不允许应用逻辑。示例:1)激活和停用CSS houver的事件;2) 复杂的选择器逻辑

加固 普拉斯,一些简单的事情

$('p:hover').css('color','red')
(没有运行)

不要对我说要用

$('a').hover(function(){
          $(this).css('color', 'red');
     },function(){
         ...
     }
); 
这是非常复杂的


在@nevermind之后编辑(参见用户回答):

下面的代码比@SamuelLiew建议的更复杂(!!)。这是因为SamuelLiew的代码重用了浏览器的渲染行为

var old_background; // to memorize original background

$.fn.hover_it = function(overcolor) { // TOO COMPLEX CODE AND OVERHEAD FOR DOM!!
    $(this).hover(function(){
        old_background = $(this).css("background-color");
        $(this).css("background-color",overcolor);
    },function(){
        $(this).css("background-color",old_background);
    });
}
 
$(document).ready(function() {
    $('p').hover_it('red');
});

他们认为你的想法是行不通的。你必须使用

jQuery(选择器)。悬停

否则就把它放在css里

也没那么复杂第一个功能是用来当你进入时第二个是用来当你离开时。只需将需要运行的代码放入正确的代码中

如果您只需要更改悬停元素的css样式,只需使用css即可

否则,您必须使用
.hover
功能


你可以使用动作监听器,但那同样“复杂”

这里有一个解决方案-我创建了一个“复杂”函数,并举例说明如何使用它:

$.fn.hover_it = function(over,out) { 
    $(this).hover(function(){
        $(this).css("background-color",over);
    },function(){
        $(this).css("background-color",out);
    });  
}

$(document).ready(function() {
    //usage
    $('p').hover_it('red','blue');
});
1) 激活和停用CSS houver的事件;2) 综合体 选择器逻辑

在上面提到的两个示例中,您仍然可以使用CSS类。只需使用jQuery为覆盖默认悬停功能的特殊定义的类执行一个toggleClass

例如,您有:

.myElement {
    color: green;
}
.myElement:hover {
    color: red;
}
只需添加此类:

.myElement.disabled {
    color: green;
}
调用
.toggleClass('disabled')
.addClass('disabled')
对任何使逻辑失败或触发事件的元素


请参见

当css已经做得如此优雅时,你为什么要在jQuery中使用它?当我看到这样的问题时,我只是摇摇头,对平局做了如此愚蠢的事投反对票,做出一个尖刻的评论,然后继续。@xec:我编辑添加注释。@Kolink:我编辑添加注释。请重新打开,我想你不明白这个问题,但是@SamuelLiew yes(!),请看以了解。什么是“动作侦听器”?那么,事件侦听器,就像.hover()是:)@xec——是的,像hover。你不想要的“复杂”函数将是最简单的方法。正如Patrick所说,第一个函数在鼠标进入时调用,第二个函数在鼠标离开时调用。不复杂:)哈哈,这不是xec的问题。。。他向我展示了我使用了错误的“术语”@PatrickEvans在(2个jQuery命令,改编自S.Liew解决方案)上看到了好的解决方案(小型jQuery代码!),并将其与不完整和更复杂的nevermind代码进行了比较。谢谢,这将很好地说明。。。但是对于“真实的插图”,你需要添加逻辑来检测“原始背景”,可以是白色或其他颜色。也许这有助于检测默认颜色:参见@SamuelLiew的简单解决方案,太复杂了。。。需要css…:)谢谢!是的,是的!我将JQuery代码(您的.addClass指示)放入更好的说明中(请,您可以将此链接添加到您的答案中,以显示问题的焦点,我们可以投票回复问题)。您的答案有重要的线索,但我添加的重要内容是“
color:inherit;cursor:auto
”,即“返回默认值”,不干涉原始布局。