我注意到我的网站控制台出现了以下错误。
错误:语法错误,无法识别的表达式:unsupported pseudo:hover @ /wp-includes/js/jquery/jquery.js?ver=1.8.3:2
我发现错误是由于我的一个js文件中的这一行:
if(qactive == 0 && !($('#slider').is(":hover"))) {
我可以用哪种替代方法来写这条线以使错误消失?
答案 0 :(得分:12)
您只需要将元素绑定到几个事件。
$("#slider").hover(
function(){
$(this).addClass('is-hover'); // you can use every class name you want of course
},
function(){
$(this).removeClass('is-hover');
}
);
或者,以更简洁的方式
$("#slider").hover(
function(){
$(this).toggleClass('is-hover'); // you can use every class name you want of course
}
);
这样,每次mouseenter
事件被触发时,您都会在元素中添加is-hover
类,当mouseleave
事件被触发时,您将删除该类。< / p>
在 if语句中,您只需更改:
if ( qactive == 0 && !($("#slider").hasClass('is-hover')) ) {
就是这样。
请注意,当然,您必须将此示例改编为您的代码。在这里,我只假设你可以需要什么,因为我看不到你的代码。
答案 1 :(得分:3)
似乎在jQuery 1.8 http://bugs.jquery.com/ticket/11731中不推荐使用“:hover”选择器,另请参阅jQuery 1.8: unsupported pseudo: hover
您可能需要自己添加一个新的事件处理程序来识别此状态:
$('.selector').on( 'mouseenter mouseleave', function() {
$(this).toggleClass('hover');
}
);
if(!$(this).parent().find('ul').first().hasClass('hover')) {
$(this).parent().parent().removeClass('open');
}
答案 2 :(得分:0)
查看悬停鼠标事件。您可以使用直布尔标志\变量来替换!($('#slider')。is(“:hover”))的检查,您可以通过悬停在$('#slider')上设置和取消设置
如果你想要一个这样的例子,你需要提供更多的代码,也许还需要一个jsfiddle。
一个非常基本的例子可能是:
var sliderHover= false;
$('#slider').hover(
function () {
sliderHover = true;
},
function () {
sliderHover = false;
}
});
// ...........MORE CODE ................
// Then later just check - watch your scoping though
if(qactive == 0 && !sliderHover)