jquery - 保留 CSS :hover After jQuery CSS Changes

标签 jquery css hover

TL;DR:我正在使用 jQuery .css() 设置元素的背景颜色,但我需要保留 css 的 :hover 功能。


我正在使用 a jQuery plugin启用将图像嵌入到一组下拉列表中。它通过将下拉选项更改为一系列具有大量附加样式的嵌套 diva 元素来实现这一点。在我的网站上,这些下拉菜单用于选择元素以在客户购买之前自定义产品预览的外观。添加的图像是可供客户选择的缩略图。

除了其中一个自定义选项包括覆盖在另一个自定义选项之上的部分透明图像(黑色、金色和银色)之外,一切都很好。基本上没有背景颜色可以让它们全部显示出来,所以我们使用 jQuery 来设置覆盖组件的背景颜色,以匹配为背景组件选择的元素的颜色。有些不会很好地显示,但那些在预览和最终产品中也会显示得很差,所以如果它们看起来不好也没关系。

所有这些都使用这段代码:

function changeSelection(id, selection, color) 
{
    //other unrelated code

    //update color of overlay to match background selection
    if (id == "SelectBackground") {
        //update background color
        $("#SelectOverlay_title").css('background-color', color);
        $("#SelectOverlay_child > a").css("background-color", color);
        $("#SelectOverlay_child > a.selected").css("background-color", "#66CCFF");

        //update text color - white for dark backgrounds; black for light
        if ((color.substring(1, 2) > -1) && (color.substring(1, 2) < 7)) {
            $("#SelectInsignia_title").css('color', "#FFFFFF");
            $("#SelectInsignia_child > a").css('color', "#FFFFFF");
        } else {
            $("#SelectInsignia_title").css('color', "#000000");
            $("#SelectInsignia_child > a").css('color', "#000000");
            $("#SelectInsignia_child > a.selected").css("color", "#FFFFFF");
        }
    }
}

但是,问题在于应用这些更改后,SelectOverlay a:hover CSS 不再触发以向客户提供有关他们当前选择的视觉反馈。

我简单地考虑过通过换出 css 类而不是调用 .css() 来应用更改,但是当你考虑到可能有几十种不同的背景颜色时,这就成了问题,每一种背景颜色都是动态提取的来自数据库。

那么...在 jQuery 中更改背景颜色后,如何保留 SelectOverlay a:hover 效果?

最佳答案

您应该使用 CSS 类,而不是通过 .css()color/background-color 设置为内联样式。这样,#SelectOverlay a:hover 仍然足够具体,可以正常工作。

快速但顽皮的选择是在 #SelectOverlay a:hover 中的每个需要它的属性上使用 !important

关于jquery - 保留 CSS :hover After jQuery CSS Changes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7179370/

相关文章:

jquery - 自定义输入样式

HTML/CSS - 使用 "dynamic margins"(变量(?) - 我该怎么做?

html - CSS垂直下拉菜单,当悬停到其他菜单时子菜单显示

javascript - 如何通过使用 jQuery 在子项中搜索内容来隐藏父项

javascript - 使用 jQuery 根据文本区域的字数计算值?

html - 如何防止 span 标签相互重叠?

jquery - 页面加载时淡入

jquery - 导航 - :hover and a:selected 上的图像

css - 悬停时是否可以仅更改 rgba 背景颜色的 alpha?

javascript - 使用 JavaScript 计时元素 fade_in