2

我的 UI 样式表中有一个类设置,以及一个用户可以使用颜色选择器设置页面样式的首选项部分。这些值以十六进制形式存储在数据库中,但是当我使用这些值通过 jQuery 更新页面时:

$nav.css("background-color", button_bg_color)

我失去了新的 :hover 颜色。非悬停颜色正确更改,但我看到它们被转换为 RGB 格式,我猜这会导致 :hover 值出现问题。我想我可以更改我的代码并在悬停时更改类来解决这个问题,但是有没有办法让 jQuery 使用十六进制值设置颜色?还是我还缺少其他东西?

更新:James Montagne 是对的,因为你不能改变 :hover 效果,所以我把它改成了一个类。现在,使用 hover() 函数,我仍然缺少一些东西:小提琴:http: //jsfiddle.net/Y9EBt/6/

4

2 回答 2

3

这里有一个问题,“Javascript 不支持获取或设置伪选择器的属性,这意味着您无法直接获取 :hover css 样式。” [来源]

然而,JQuery 确实有一个.hover() 函数,它可能用于间接更改悬停项的 css。示例:jQuery CSS 悬停

编辑: 这是我展示它工作的小提琴:http: //jsfiddle.net/TvfB9/1/

关键点是:

  • 我在 javascript 中创建了一个全局变量(在文档就绪函数之外): hover_color = "#00FFff";用于存储用户的“新”或“所需”悬停颜色。理想情况下,您可能希望在页面加载时将其初始化为样式表中的任何内容。

  • 然后在更改颜色函数中,我更新全局变量:hover_color = hover_text_color;. 在此示例中,我将其分配给您已在小提琴中使用的变量,但 hover_text_color 应替换为用户从您的选择器控件中选择的任何值。

  • 我向文档就绪的 javascript 对象添加了一个悬停功能,并从全局变量中为 .nav 类设置 CSS。

    $('.nav').hover(function() {
        $(this).css('color', hover_color ); 
    },
    function() {
        $(this).css('color', '#ffffff');
    }); 

基本上,当您使用 .CSS 设置 CSS 时,它实际上将 CSS 应用于附加了该类的特定标签的“样式”属性,它不会修改内存中的 CSS 文件或任何东西。因此,当您运行悬停功能时,您几乎忘记了您尝试对 CSS 类进行的更改。

为了懒惰,我只改变前景色,并将非悬停前景色硬编码,显然,你不会想要;-)

于 2012-09-14T20:08:14.290 回答
0

:hover不能以这种方式用作选择器。选择器的想法是 jquery 将找到页面上当前与选择器匹配的所有元素。虽然:hover我相信它根本不是一个有效的选择器,但如果是的话,我的想法是找到所有当前悬停在上面的元素,因为这就是选择器的工作方式。

此外,使用.css样式设置元素本质上只是将值添加到元素的样式属性。因此,由于无法hover直接在 style 属性中设置 css,因此无法使用.css.

于 2012-09-14T19:39:28.203 回答