不,你不能直接从CSS中触发JavaScript。
你可以使用CSS选择器来找到想要监视的元素,然后监听鼠标事件。标准事件是mouseover
和mouseout
,但它们可能比较棘手,因为它们冒泡(例如,当鼠标离开任何后代元素时,你会得到mouseout
)。但通过适当的逻辑处理,它们并不难处理,实际上,如果你有很多这样的元素,你可能想使用mouseover
和mouseout
而不是下面的替代方法,因为你可以将它们设置在一个父容器上,然后确定涉及哪个后代元素,这在某些情况下可能更简单(在其他情况下可能更复杂)。
IE提供了mouseenter
和mouseleave
,它们更容易使用,因为它们不冒泡,但当然这是IE特有的。这些非常方便,以至于一些框架即使在不支持的浏览器中也开始支持它们;例如,Prototype和jQuery提供了它们,我也不会感到惊讶如果其他一些框架也提供了。jQuery还提供了方便的hover
函数,这非常接近你想要的:
$(".first-nav li a").hover(
function(event) {
},
function (event) {
}
);
这实际上只是一种设置 mouseenter
和 mouseleave
事件处理程序的快捷方式,但仍然非常简洁。
在 Prototype 中也很相似:
$$(".first-nav li a")
.invoke("observe", "mouseenter", function(event) {
})
.invoke("observe", "mouseleave", function(event) {
});
(OT:在这两种情况下,我都使用了匿名内联函数表达式,只是为了避免给人留下必须使用命名函数的印象。然而,在生产代码中,我始终建议使用命名函数。)