Jquery 使用每个方法独立显示单个元素
尝试使用每个函数一次只显示一个元素,但不确定如何获得与第一个项关联的匹配项,因此当您将鼠标悬停在第一个“hoverMe”上时,它只显示第一个showMe,依此类推 到目前为止,我已经做到了这一点,我想我可以用一种非常混乱的方式来做这件事,但不确定是否有一种干净的方式来做这件事Jquery 使用每个方法独立显示单个元素,jquery,hover,each,fadein,fadeout,Jquery,Hover,Each,Fadein,Fadeout,尝试使用每个函数一次只显示一个元素,但不确定如何获得与第一个项关联的匹配项,因此当您将鼠标悬停在第一个“hoverMe”上时,它只显示第一个showMe,依此类推 到目前为止,我已经做到了这一点,我想我可以用一种非常混乱的方式来做这件事,但不确定是否有一种干净的方式来做这件事 悬停显示我 悬停显示我 悬停显示我 $('.showMe').hide(); $(“.hoverMe”).each(函数(){ $(此)。悬停( 函数(){ $(“.showMe”).fadeIn(); }, 函数(){
悬停显示我
悬停显示我
悬停显示我
$('.showMe').hide();
$(“.hoverMe”).each(函数(){
$(此)。悬停(
函数(){
$(“.showMe”).fadeIn();
},
函数(){
$(“.showMe”).fadeOut();
}
);
});
此关键字将引用函数中当前悬停的元素,并将其用作选择器中的上下文,您只能选择当前悬停段落中的跨距
.hover()
是.on('mouseenter mouseleave'
的快捷方式,我发现直接使用它更容易,而fadeToggle()
将切换淡入效果
$('.showMe').hide();
$(".hoverMe").on('mouseenter mouseleave', function() {
$(".showMe", this).fadeToggle();
});
编辑:
要确保淡入切换正确(这很少是一个问题),您可以创建自己的切换功能:
$('.showMe').hide();
$(".hoverMe").on('mouseenter mouseleave', function(e) {
$(".showMe", this)[e.type=='mouseenter'?'fadeIn':'fadeOut']();
});
我建议:
$('.showMe').hide();
$('.hoverMe').on('mouseenter mouseleave', function(e){
// looks within the hovered-over element:
$(this)
// to find the '.showMe' element
.find('.showMe')
// stops all currently-running animations
.stop(true, true)
// fades the discovered '.showMe' element(s) in, or out
// depending on whether the mouse entered, or left, the '.hoverMe' element
.fadeToggle(e.type == 'mouseenter');
});
不过,这确实使用了jQuery1.9(不同于您最初的演示,它使用了1.6.4)
但是,如果您想继续使用jQuery 1.6.4,您可以使用delegate()
,尽管这有点难看,但不幸的是:
$('.showMe').hide();
$('.hoverMe').parent().delegate('.hoverMe', 'mouseenter mouseleave', function(e){
$(this).find('.showMe').stop(true, true).fadeToggle(e.type == 'mouseenter');
});
参考资料:
hoverMe
的每个项目,此代码查找类为showMe
的悬停项目的子项,并使它们成为fadeIn()
和fadeOut()
我没有坚持使用1.6,这只是项目目前正在使用的。肯定能够升级。我更喜欢更干净的语法。我现在就来试试。啊,我想我最喜欢这个。它非常干净。我正在阅读.on方法和fadeToggle,我不知道这些。谢谢。我对这种方法要小心的一件事是fade ever与mouseenter/mouseleve状态不同步。在适当的情况下,您可能会意外地导致它在mouseleve上可见,而在mouseenter上不可见。请小心。
$('.showMe').hide();
$('.hoverMe').parent().delegate('.hoverMe', 'mouseenter mouseleave', function(e){
$(this).find('.showMe').stop(true, true).fadeToggle(e.type == 'mouseenter');
});
$('.showMe').hide();
$(".hoverMe").mouseover(function(){
$('.showMe').fadeOut();
$(this).find(".showMe").fadeIn();
});
$(".hoverMe").each(function(){
$(this).hover(
function () {
$(this).children(".showMe").fadeIn();
},
function () {
$(this).children(".showMe").fadeOut();
}
);
});