我有一个div
,其中包含div
,img
,a
,h3
,input
元素。它们动态变化(轮播)。所以我需要停止setInterval
,它会在悬停时提供此更改,但它不起作用(hover
事件不会触发)。
jQuery('div.slider').on('hover', 'div, img, a, h3, input',
//Tried jQuery('body').on('hover', 'div.slider'...
//Alsro tried on('focusin focusout')
function(event){
console.log('on');
if(event.type === 'focusin'){
console.log(event.type);
stopCarousel();
}
else if(event.type === 'focusout'){
console.log(event.type);
startCarousel();
}
}
);
问题出在哪里?
答案 0 :(得分:3)
.hover()
,是一个函数而不是一个事件,它使用mouseenter
和mouseleave
,因此它肯定不会有与focusin或focusout匹配的类型。我只是这样做:
$('div.slider').on({
mouseenter: function() {
stopCarousel();
},
mouseleave: function() {
startCarousel();
}
}, 'div, img, a, h3, input');
答案 1 :(得分:1)
我认为您要查找的活动不是hover
,而是mouseover
。
在纯Javascript中,不存在hover
事件。悬停是结论mouseover
,它开始悬停,mouseout
停止悬停事件。在你的情况下,mouseover
应该是你正在寻找的事件。
答案 2 :(得分:1)
$('.slider').mouseenter(function (event) {
console.log(event.type);
stopCarousel();
});
$('.slider').mouseleave(function (event) {
console.log(event.type);
startCarousel();
});
参考:http://api.jquery.com/mouseleave/和http://api.jquery.com/mouseenter/