使用 javascript 悬停时编辑 link 的颜色

Edit the colour of a link on hover with javascript

这不是我正在做的,只是 post 代码的一种简单方法,但为什么这不起作用?

var links = 'hsla(40, 50%, 50%, 1)';

$('a:hover').css({'color' : links });

我应该如何表达 javascript 代码才能使其正常工作?

删除大括号并使用逗号代替冒号:

var links = 'hsla(40, 50%, 50%, 1)';

$('a:hover').css('color', links);

$('a:hover') 在执行时选择所有悬停的锚元素。而且它不一定会在未来选择所有悬停的元素。

使用 mouseentermouseleave 事件

var links = 'hsla(40, 50%, 50%, 1)';

$('a').on({
  mouseenter: function() {
    $(this).css({ 'color': links })
  },
  mouseleave: function() {
    $(this).css({ 'color': 'rgb(85, 26, 139)' })
  }
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<a href>Link 1</a>
<a href>Link 2</a>
<a href>Link 3</a>

使用 CSS 自定义属性(变量)

var links = 'hsla(40, 50%, 50%, 1)';

document.documentElement.style.setProperty('--hover-color', links);
a {
  color: rgb(85, 26, 139);
}

a:hover {
  color: var(--hover-color, rgb(85, 26, 139));
}
<a href>Link 1</a>
<a href>Link 2</a>
<a href>Link 3</a>

问题在于,当您的代码执行时,它会查找所有 当前 处于悬停状态的 a 元素,即 none他们,所以什么也没有发生。一旦您实际将鼠标悬停在 a 上,您需要 运行 的代码就已经完成了。

相反,只需在 CSS:

中执行此操作

a:hover { color: hsla(40, 50%, 50%, 1); }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a href="#test">test</a>