悬停功能生效时不能添加类
Can't add class while Hover function is in effect
我想做什么
我有一个列表(ul#portfoliolist
),其中每个项目是一个不同的导航项。
当用户将鼠标悬停在任何项目上时,不透明度从0.65
变为1
,右填充从0
变为10px
。当用户将鼠标移开时,这些将被反转:
$('ul#portfoliolist>li:not(.active)').hover(function(){
$(this).stop().animate({paddingRight:'10px',opacity:1},100);
},function(){
$(this).stop().animate({paddingRight:0,opacity:0.65},300);
})
如果用户单击列表项,它将从任何其他列表项中删除类active
,并将类active
添加到所单击的元素中:
$('ul#portfoliolist>li').click(function(){
$('ul#portfoliolist>li').removeClass('active');
$(this).addClass('active');
//var item = $(this).attr('data-portfolio');
//$('div.portfolio').css({backgroundImage:'url(img/portfolio_'+item+'.png)'})
})
我遇到的问题
虽然这两个功能单独工作得很好,但当它们结合在一起时,我无法同时做到这两点——只有悬停效果是成功的。
当我将鼠标悬停在上面时,所需的动画可以工作,但是当我将光标移开时,次要的悬停函数会发生,并且会覆盖.active
css。
如何使click
函数优先于hover
函数的mouseout
部分?
$('ul#portfoliolist>li:not(.active)').hover(function(){
$(this).stop().animate({paddingRight:'10px',opacity:1},100);
},function(){
if($this).hasClass('active'){
return;
}
$(this).stop().animate({paddingRight:0,opacity:0.65},300);
})
似乎只是把这个写在StackOverflow上就足够清楚了,我可以自己找到一个解决方案:
$('ul#portfoliolist>li:not(.active)').hover(function(){
$(this).stop().animate({paddingRight:'10px',opacity:1},100);
},function(){
if($(this).hasClass('active')){
$(this).stop().animate({paddingRight:0},300);
} else {
$(this).stop().animate({paddingRight:0,opacity:0.65},300);
}
})
由于在hover
函数的mouseover
和mouseout
部分之间添加了.active
类,因此我在mouseout
函数中添加了if
语句,以查看在游标进入元素的时间内是否添加了.active
类。
相关文章:
- 为什么在使用 removeEventListner 后不能添加 EventListener
- AngularJS,不能添加模块
- 为什么我的两个变量不能添加相同的对象?Javascript
- 如何在#之后添加文本,但不能添加#
- 不能添加JS文件,或任何其他,到钛项目文件夹
- 为什么不能添加字符串到javascript数组
- 为什么我不能添加一个元素,删除它,然后第二次添加相同的元素?
- 不能添加流星包
- 不能添加监听器
- Slick .js不能添加null错误
- 我不能添加一个类到标签,虽然它说ok
- 为什么我不能添加字段到JS对象
- 我不能添加信息到我的表在mysql.我使用javascript来显示信息消息,然后它不做任何事情
- 悬停功能生效时不能添加类
- 不能添加'1'在预谋
- 条纹:不能添加到表单动态创建的表格通过javascript
- 为什么Array不能添加带有字面量的原型
- w2ui: ERROR:不能添加没有记录的记录.(obj:网格)
- highchart不能添加series
- 纯HTML的Ajax响应不能添加到IE8中现有的dom元素的原因