Jquery实现滚动效果(修改版)

       在页面中,当我们ul中li的数量过多时,我们需要利用滚动效果将内容在一个特定大小的滚动显示出来。在网络上有一个实现滚动效果的代码。

(function($){  
    var status = false;  
    $.fn.scrollQ = function(options){  
        var defaults = {  
        	//div中显示的条数
            line:4,     
            //每次滚动的条数
            scrollNum:1, 
            scrollTime:1000
        }
		var options=jQuery.extend(defaults,options);
		var _self = this;
		return this.each(function(){

                        //这里就是修改的部分-------------------
			//当ul中li的条数少于显示的条数(line)时,就不进行滚动,否则li就会在滚动后消失。
			temp = document.getElementById('sItem');
			lis = temp.getElementsByTagName('li');
			if(lis.length<defaults.line){
				// alert(lis.length); //显示li元素的个数
				return;
			}
			//直到这里---------------------------
			$("li",this).each(function(){
				$(this).css("display","none");
			})
			$("li:lt("+options.line+")",this).each(function(){
				$(this).css("display","block");
			})
			function scroll() {
				for(i=0;i<options.scrollNum;i++) {
					var start=$("li:first",_self);
					start.fadeOut(100);
					start.css("display","none");
					start.appendTo(_self);
					$("li:eq("+(options.line-1)+")",_self).each(function(){
						$(this).fadeIn(500);
						$(this).css("display","block");
					})
				}
			}
			var timer;
			timer = setInterval(scroll,options.scrollTime);
			_self.bind("mouseover",function(){
				clearInterval(timer);
			});
			_self.bind("mouseout",function(){
				timer = setInterval(scroll,options.scrollTime);
			});
			
		});
    }
})(jQuery);

   方法中line代表的便是在每次显示li的条数,当我们内容所包含的li数量小于line时,js会把下面空的li循环滚动到上一层,导致在循环过后所有的li都为空,所以我在这里加上一个判断,当我们内容所包含的li长度小于line时便不进行滚动,因为所有的内容都已显示。

下面是html代码

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<HTML xmlns="http://www.w3.org/1999/xhtml">
<HEAD>
<TITLE>test</TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="http://lib.sinaapp.com/js/jquery/1.7/jquery.min.js"></script>
<script type="text/javascript" src="scrollQ.js"></script>
<script type="text/javascript">
$(document).ready(function(){
	$("#sItem").scrollQ();
});
</script>
</head>
    <body>
    <div>
    <ul id="sItem">
    <li>标题1</li>
     <li>标题2</li>
   <li>标题3</li>
  <li>标题4</li>
   <li>标题5</li>
    <li>标题6</li>
    <li>标题7</li>
    <li>标题8</li>
    <li>标题9</li>
    <li>标题10</li>
    </ul>
    </div>
</body>
</html>

猜你喜欢

转载自1170271222.iteye.com/blog/2391244