我注意到我在我的网站上的控制台中收到以下错误。
错误:语法错误,无法识别的表达式:不支持的伪:hover @ /wp-includes/js/jquery/jquery.js?ver=1.8.3:2
我发现错误是由于我的一个 js 文件中的这一行引起的:
if(qactive == 0 && !($('#slider').is(":hover"))) {
我可以用什么替代方式编写此行以使错误消失?
我注意到我在我的网站上的控制台中收到以下错误。
错误:语法错误,无法识别的表达式:不支持的伪:hover @ /wp-includes/js/jquery/jquery.js?ver=1.8.3:2
我发现错误是由于我的一个 js 文件中的这一行引起的:
if(qactive == 0 && !($('#slider').is(":hover"))) {
我可以用什么替代方式编写此行以使错误消失?
您只需要将元素绑定到几个事件。
$("#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
触发事件时,您将删除该类。
在您的if 语句中,您只需更改:
if ( qactive == 0 && !($("#slider").hasClass('is-hover')) ) {
就是这样。
请注意,当然,您必须使这个示例适应您的代码。在这里,我只是假设您可能需要什么,因为我看不到您的代码。
jQuery 1.8 中似乎不推荐使用“:悬停”选择器http://bugs.jquery.com/ticket/11731另请参阅jQuery 1.8:不支持的伪:悬停
您可能必须自己添加一个新的事件处理程序才能识别此状态:
$('.selector').on( 'mouseenter mouseleave', function() {
$(this).toggleClass('hover');
}
);
if(!$(this).parent().find('ul').first().hasClass('hover')) {
$(this).parent().parent().removeClass('open');
}
看看悬停鼠标事件。您可以将 !($('#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)