下面的代码引发错误unsupported pseudo: hover
jQuery的1.8,而它的作品完美jQuery的1.7.2:
if(!$(this).parent().find('ul').first().is(':hover')) {
$(this).parent().parent().removeClass('open');
}
有谁知道这是怎么回事?
下面的代码引发错误unsupported pseudo: hover
jQuery的1.8,而它的作品完美jQuery的1.7.2:
if(!$(this).parent().find('ul').first().is(':hover')) {
$(this).parent().parent().removeClass('open');
}
有谁知道这是怎么回事?
不幸的是,虽然我们都希望我们的代码是面向未来的,你的$('foo').on( 'hover, ... function(){ //do stuff }
代码中的jQuery 1.8弃用 。我希望我有更好消息要告诉你,但你的代码,因为核心改变将jQuery 1.8的破坏。现在,您必须使用语法
$('.selector').on( 'mouseenter mouseleave', function() {
$(this).toggleClass('hover');
}
);
if(!$(this).parent().find('ul').first().hasClass('hover')) {
$(this).parent().parent().removeClass('open');
}
希望能有更好的消息要告诉你,但折旧情况:/ ... jQuery的1.8不喜欢你的快捷方式,他们已经过时了hover
从事件处理程序.on()
也是伪选择:hover
,因此它可以“T可以使用的是任何方式更多。
老问题,但任何人使用Google:
对此的解决办法是圆走另一条路:
$(":focus, :active").filter($(".your-element"));
......因为.filter()
也接受的jQuery对象,此将匹配与假点的任何元素:focus
和:active
还具有类.your-element
。
换句话说,如果.your-element
不盘旋或活性,该选择没有元素相匹配。
奇怪的 - 对我来说,。是(“:悬停”)仍然在1.8的工作,但在1.9.1打破。
总之,这里是一个修复
function mouseIsOverWorkaround(what){
var temp = $(what).parent().find(":hover");
return temp.length == 1 && temp[0] == what;
}
然后调用上述功能的“裸露的”(非jQuery的包裹)元件上。 根据你的情况,
if(!mouseIsOverWorkaround($(this).parent().find('ul').first()[0]) {
$(this).parent().parent().removeClass('open');
}
(不要忘记的[0])
上述(到原稿的问题评论)摆弄http://jsfiddle.net/nnnnnn/Tm77a/不jQuery的1.9.1工作
拨弄这一个http://jsfiddle.net/mathheadinclouds/BxL4w/
也许你可以使用一些代码解决这个问题(但仍可能贵)
添加类hover
在mouseenter
,删除它在mouseleave
,然后对其进行测试。
$('.selector').hover(
function(){$(this).addClass('hover');},
function(){$(this).removeClass('hover');}
);
if(!$(this).parent().find('ul').first().hasClass('hover')) {
$(this).parent().parent().removeClass('open');
}