jQuery 学习笔记之十三
在IE7中firefox浏览器上可以使用伪劣:hover来显示导航效果,但是IE6并不支持除超链接外的元素使用这个伪类。在IE六下 hover css 无法运行
#navigation ul li:hover ul{
background-color:#88c366;
position:absolute;
widht:100px;
display:block;
}
为<li>元素添加hover事件,jQuery代码如下:
$(function(){
$("#navigation ul li:has(ul)").hover(function(){ //鼠标移动过来,向下滑动显示菜单
$(this).children("ul").stop(true,true).slideDown(400);
},function(){
$(this).children("ul").stop(true,true).slideUp("fast"); //收起菜单
});
})
展开关闭
$(function(){
$(".module_up_down").toggle(function(){
var $self = $(this);
$self.prev().slideToggle(600,function(){
$("img",$self).att("scr","images/up.gif");
})
},function(){
var $slef=$(this);
$self.prev().slideToggle(600,function(){
$("img",$self).attr("src","images/down.gif");
});
})
})
//设置定时器
var scrollTimer= setInterval(function(){
scrollNews(x);
},3000);
//当光标滑过内容时,动画需要停止;当光标滑出后,动画由继续
$(".scrollNews").hover(function(){
clearInterval(scrollTimer);
},function(){
scrollTimer= setInterval(function(){
scrollNews(x);
},3000);
});
//设置定时器
var scrollTime=setInterval(function(){
scrollTimes(x);
},3000);
function scrollNews(obj){
var $self = obj.find("ul:first");
var lineHeight = $self.find("li:first").height();//获取行高
$self.animate({"marginTop":-lineHeight+"px"},600,function(){ //设置滚动
$self.css({marginTop:0}).find("li:first").appendTo($self); //重新设置marginTop ,把第一个值添加到最后。
});
}
//合并代码
$(function()){
var $this = $(".scrollNews");
$this.hover(function(){
clearInterval(scrollTimer);
},function(){
scrollTimer= setInterval(function(){
scrollNews($this);
},3000);
});
//设置定时器
var scrollTimer = setInterval(function(){
scrollNews($this);
},3000);
}
$(function(){
var $this = $(".scrollNews");
$this.hover(function(){
clearInterval(scrollTimer);
},function(){
scrollTimer= setInterval(function(){
scrollNews($this);
},3000);
});
var scrollTimer = setInterval(function(){
scrollNews($this);
},3000);
});
function scrollNews(obj){
var $self = obj.find("ul:first");
var lineHeight = $self.find("li:first").height;//获取行高
$self.animate({"marginTop":-lineHeight+"px"},600,function(){
$self.css({marginTop:0}).find("li:first").appendTo($self);
})
}
//与hover事件的第2个函数中继续执行动画的代码完全相同,那么能否让它们合并?能否直接触发hover事件的第2个函数?
hover() 方法得含义是鼠标滑入滑出,它对应着2个事件,即mouseenter和mouseleave,因此可以通过trigger("mouseleave")函数来触发hover事件的第2个函数
$(function(){
var $this = $(".scrollNews");
var scrollTimer;
$this.hover(function(){
clearInterval(scrollTimer);
},function(){
setInterval(function(){
scrollNews($this);
},3000)
}).trigger("mouseleave");
});
//当用户进入页面后,就会触发hover事件的第2个函数,从而使内容滚动起来,与前面的效果相同,但代码简化了很多,同时scrollTimer提前显示声明
避免scrollTimer作为一个全局变量而造成代码冲突。
出处:http://www.cnblogs.com/liuyong/
作者喜欢研究 Sql Server ,ASP.NET MVC , Jquery WCF 等技术,同时关心分布式架构的设计应用。转载请保留原文链接,谢谢!
浙公网安备 33010602011771号