The following code raises the error unsupported pseudo: hover
on jQuery 1.8, while it works perfect on jQuery 1.7.2:
if(!$(this).parent().find('ul').first().is(':hover')) {
$(this).parent().parent().removeClass('open');
}
Does anyone know what's going on?
weird - for me, .is(":hover") is still working in 1.8, but broken in 1.9.1.
Anyway, here is a fix
then call above function on the "naked" (non jQuery-wrapped) element. In your case,
(don't forget the [0])
the above-mentioned (comment to orig question) fiddle http://jsfiddle.net/nnnnnn/Tm77a/ does not work in jQuery 1.9.1
fiddle with this one http://jsfiddle.net/mathheadinclouds/BxL4w/
maybe you can fix this using a bit of code (but yet maybe expensive)
add class
hover
onmouseenter
, remove it onmouseleave
and then test on it.Old question, but for anyone googling:
A workaround for this is to go the other way round:
$(":focus, :active").filter($(".your-element"));
…because
.filter()
also accepts jQuery objects, this will match any elements with the pseudos:focus
and:active
that also have the class.your-element
.In other words, if
.your-element
isn't hovered or active, this selection matches no elements.Unfortunately, while we all wish that our code were future proof, your
$('foo').on( 'hover, ... function(){ //do stuff }
code is deprecated in jQuery 1.8. I wish I had better news for you, but your code is broken because of a core change to jQuery 1.8. You now have to use the syntaxWish I had better news for you, but deprecation happens :/ ... jQuery 1.8 doesn't like your shortcut and they've deprecated the
hover
event handler from.on()
and also the pseudo-selector:hover
, so it can't be used that way any more.