2010-06-07 50 views
9

如何通过JavaScript(jQuery)触发非锚点元素的活动状态?触发CSS:非锚点元素的活动选择器


虽然参照审查Section 5.11.3 of the W3C CSS2 specification:hover伪选择器来查看有关触发的激活,我碰到这使我相信它应该是可能的下面就来:

“的:当用户激活一个元素时,激活的伪类应用,例如,在用户按下鼠标按钮并释放它的时间之间。

“CSS没有定义哪些元素可能处于上述状态,或者状态是如何进入和离开的。脚本可能会改变元素是否对用户事件做出反应,并且不同的设备和UA可能有不同的指向方式到或激活元素“。

感谢您的协助!

回答

2

你不能使用javascript触发一个类似:active的CSS伪选择器。 没有可以执行的功能/处理程序,所以即使您在具有css :active伪选择器设置的元素(例如,将背景颜色设置为红色)的某个元素上设置了trigger,0,click,也不会发生任何事情。

+0

那如果真的是令人失望的。我知道我还没有找到办法,但我不明白为什么不应该这样做。 =( – 2010-06-09 12:41:41

2

我在搜索完全相同的东西时遇到了这个问题。

基本上我有一个文本区域和一个按钮。 button.click在用户按回车时触发。然而:在CSS中的活动选择器没有被触发,所以它不会产生相同的影响。

所以这就是我所做的。它有点多余,但有效。

在CSS

/*this is for actual clicks on the button */ 
.Button:active { 
position:relative; 
top:5px; 
} 

/* this is for pressing enter instead of clicking the button */ 
.Button.activate{ 
position:relative; 
top:5px; 
} 

然后在jQuery的

//if enter is pressed, trigger button click 
$("#textArea").keydown(function(event){ 
if(event.keyCode == 13){ 
    $("#button").click(); 
    $("#button").addClass('activate'); 
} 
}); 

//if enter is released, remove class 
$("#textArea").keyup(function(event){ 
if(event.keyCode == 13){ 
    $("#button").removeClass('activate'); 
} 
}); 
+0

)在css规则中使用'.Button:active,.Button.activate {...}'可以让你只定义一次样式并消除冗余问题。 – dim 2017-10-12 19:20:10