$('#something a:hover').css({'something': 'thomesing'});
适用于1.3 ,但不适用于1.4。如何解决?
答案 0 :(得分:15)
遵守规则
这是一个极好的例子,说明为什么我们必须始终根据文档进行编码,而不是根据可能性进行编码。黑客,或者像这样的疏忽,最终会被淘汰。
正确的jQuery(普通css更好)方法如下:
$("#something a").hover(
function() {
// $(this).addClass("hovered");
$(this).css("color", "red");
},
function() {
// $(this).removeClass("hovered");
$(this).css("color", "black");
}
);
$.fn.hover
method最多需要两个参数,并作为更明确的指针(鼠标)事件的语法糖。实际上,jQuery 2.1.0中的悬停方法只不过是这样:
function( fnOver, fnOut ) {
return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
}
了解您的代码,并简明扼要
如您所见,输入元素时会调用fnOver
函数,退出时会再次调用(如果没有提供其他方法)。有了这种理解,我们可以设置更简单的指令:
$("#something a").hover(function () {
$(this).toggleClass("hovered");
});
Native几乎总是胜利
最终,vanilla CSS是最佳选择。 :hover
伪类已经around for a long time,不仅可以定位它所属的元素,还可以定位嵌套元素:
#something a:hover {
background: red;
}
#something a:hover .icon {
animation: 2s rotate ease-out;
}
有了:hover
这样广泛支持的东西,我认为没有充分的理由可以避免它。
答案 1 :(得分:7)
:hover不是文档化的伪类选择器。
试试这个:
$('#something a').hover(function(){
$(this).css({'something': 'thomesing'});
},
function(){
$(this).css({'something': 'previous'});
});
虽然,你最好使用CSS类:
$('#something a').hover(function(){
$(this).toggleClass("over").toggleClass("out");
},
function(){
$(this).toggleClass("over").toggleClass("out");
});
http://docs.jquery.com/Events/hover
修改强>
在下面的BlueRaja评论中,以下内容更合适:
$('#something a').hover(function(){
$(this).addClass("over").removeClass("out");
},
function(){
$(this).removeClass("over").addClass("out");
});
答案 2 :(得分:4)
答案 3 :(得分:4)
hover
在1.4中发生了变化,有趣的是,这里的任何人似乎都无法检查jQuery文档......
$("#something a").hover(
function () {
$(this).toggleClass("active")
}
);
通过css更改颜色。
注意:
致电$(selector).hover(handlerInOut)
是简写:
$(selector).bind("mouseenter mouseleave",handlerInOut);
答案 4 :(得分:3)
我不认为它在1.3中有效。正如菲利普所说,它没有意义。
:悬停是一个事件,而不是一个属性。所以我看不出那个选择器是如何起作用的。
你可以使用悬停功能作为提到的antpaw - http://docs.jquery.com/Events/hover#overout
或者您可以设置css样式规则。 e.g。
$('head').append("<style type='text/css'>#something:hover{foo: bar}</style>");
答案 5 :(得分:2)
你可以使用.hover()函数甚至更好的普通css
答案 6 :(得分:0)
对我而言,该选择器没有多大意义,因为它取决于用户的事件。选择器更多地是关于静态内容,其中函数hover()可以跟踪事件。在您拨打电话时,用户必须将鼠标放在内容之上。
在某些情况下可能会有用,但在你提到的情况下,Jonathon Sampson有正确的答案。请改用$("#something a").hover(function() {$(this).css("something","thomesing");});
。
答案 7 :(得分:0)
jQuery如何工作是它解析选择器(无论是css还是常规选择器)然后返回jQuery对象。截至今天,jQuery不支持':hover'选择器。 它可能适用于Chrome或FF或Safari,但在IE6,7和8中肯定会失败。
很好的解决方法是使用jQuery的hover()方法。
在更复杂的情况下,您希望在要使用“:hover”选择的容器上注册mouseenter和mouseleave事件处理程序,并添加/删除“.hover”类。 一旦常规'hover'类存在,您可以使用'#container.hover'选择器从代码中的任何位置轻松访问该容器元素。
如果你需要帮助编码,请告诉我......