为了账号安全,请及时绑定邮箱和手机立即绑定
  • <!DOCTYPE html>
    <html leng="zh-CN">
    <head>
        <meta charset="UTF-8"/>
        <title>星级评分--第二种方式</title>
        <style>
            body,ul,li{
                padding: 0;
                margin: 0;
            }
            li{
                list-style-type: none;
            }
            .rating{
                width:150px;
                height: 27px;
                margin:100px auto;
            }
            .rating-item{
                float:left;
                width:30px;
                height: 27px;
                background:url(img/start1.PNG) no-repeat;
                cursor:pointer;
            }
        </style>
    </head>
    <body>
    <ul class="rating" id="rating">
        <li class="rating-item" title="很不好"></li>
        <li class="rating-item" title="不好"></li>
        <li class="rating-item" title="一般"></li>
        <li class="rating-item" title="好"></li>
        <li class="rating-item" title="很好"></li>
    </ul>
    <ul class="rating" id="rating2" >
        <li class="rating-item" title="很不好2"></li>
        <li class="rating-item" title="不好2"></li>
        <li class="rating-item" title="一般2"></li>
        <li class="rating-item" title="好2"></li>
        <li class="rating-item" title="很好2"></li>
    </ul>
    <script src="http://libs.baidu.com/jquery/1.11.3/jquery.min.js"></script>
    <script>
        var rating=(function(){
    //点亮整颗
            var LightEntire=function(el,options){
                this.$el = $(el);
                this.$item = this.$el.find('.rating-item');
                this.opts = options
            }
            LightEntire.prototype.init=function(){
                this.lightOn(this.opts.num);
                if(!this.opts.readOnly){
                    this.bindEvent();
                }
    
            }
            LightEntire.prototype.lightOn=function(num){
                num=parseInt(num)
                this.$item.each(function (index) {
                    if (index < num) {
                        $(this).css('background-position', '0 -45px');
                    } else {
                        $(this).css('background-position', '0 -15px');
                    }
                })
            }
                LightEntire.prototype.bindEvent=function(){
                    var self=this;
                    itemLength=self.$item.length;
                    self.$el.on('mouseover', '.rating-item', function () {
                        var num=$(this).index() + 1
                        self.lightOn(num);
                        (typeof self.opts.select==='function') &&self.opts.select.call(this,num,itemLength);
                        //触发select事件
                        self.$el.trigger('select',[num,itemLength])
                    }).on('click', '.rating-item', function () {
                        self.opts.num = $(this).index() + 1;
                        (typeof self.opts.chosen==='function') &&self.opts.chosen.call(this,self.opts.num,itemLength);
                        self.$el.trigger('chosen',[self.opts.num,itemLength])
                    }).on('mouseout',function(){
                        self.lightOn(self.opts.num)
                    })
                };
    //默认参数
                var defaults={
                    num:0,
                    readOnly:false,
                    selsect:function(){},
                    chosen:function(){}
                };
    //初始化
                var init = function(el,options){
                    options=$.extend({},defaults,options);
                    new LightEntire(el,options).init()
                }
            return {
                //返回一个对象(对象是一个方法)
                init:init
            }
    
        })()
    
            rating.init('#rating',{
            num:2,
           /* select:function(num,total){
                console.log(this)
              console.log(num+'/'+total)
             }*/
        });
        $('#rating').on('select',function(e,num,total){
            console.log(num+'/'+total);
        }).on('chosen',function(e,num,total){
            console.log(num+'/'+total);
        })
    
    </script>
    </head>
    </body>
    </html>


    查看全部
    0 采集 收起 来源:点亮半颗星星

    2018-11-13

  • 半颗星的分析

    https://img1.sycdn.imooc.com//5bea3dd100012df103720301.jpg

    查看全部
  • var Beverage = function(){};
    Beverage.prototype.boilWater=function(){
        console.log("把水煮沸")
    };
    Beverage.prototype.brew=function(){
        throw new Error('子类必须重写该方法');
    };
    Beverage.prototype.pourInCup=function(){
        throw new Error('子类必须重写该方法');
    };
    Beverage.prototype.addCondiments=function(){
        throw new Error('子类必须重写该方法');
    };
    Beverage.prototype.customerWantsCondiments=function(){
        return true;
    };
    Beverage.prototype.init=function(){
        this.boilWater()
        this.brew()
        this.pourInCup()
        if(this.customerWantsCondiments()){
            this.addCondiments()
        }
    };
    var Coffee= function(){};
    Coffee.prototype.brew=function(){
        console.log("用沸水冲泡咖啡")
    };
    Coffee.prototype.pourInCup=function(){
        console.log("把咖啡倒进杯子")
    };
    Coffee.prototype.addCondiments=function(){
        console.log("加糖和牛奶")
    };
    
    var Tea=function(){};
    Tea.prototype.brew=function(){
        console.log("用沸水浸泡茶叶")
    };
    Tea.prototype.pourInCup=function(){
        console.log("把茶水倒进杯子")
    };
    Tea.prototype.addCondiments=function(){
        console.log("加柠檬")
    };
    //泡一杯不加调料的茶
    Tea.prototype.customerWantsCondiments=function(){
        return window.confirm("请问需要加调料嘛?")
    //return false;
    };
    Coffee.prototype=new Beverage;
    Tea.prototype=new Beverage;
    var coffee=new Coffee();
    coffee.init();
    var tea=new Tea();
    tea.init();


    查看全部
  • 设计模式--分离共同点

    1. 咖啡和茶不同,抽象出‘饮料’

    2. 把水煮沸

    3. 泡的方式不同,抽象成‘泡’

    4. 加的调料不同,抽想成‘调料’

    查看全部
  • Pattern.js

    var Coffee=function(){};

    Coffee.prototype.boilWater=function(){
    console.log("把水煮沸")
    };
    Coffee.prototype.brewCoffee=function(){
    console.log("用沸水冲泡咖啡")
    };
    Coffee.prototype.pourInCup=function(){
    console.log("把咖啡倒进杯子")
    };
    Coffee.prototype.addSugarAndMilk=function(){
    console.log("加糖和牛奶")
    };
    Coffee.prototype.init=function(){
    this.boilWater()
    this.brewCoffee()
    this.pourInCup()
    this.addSugarAndMilk()
    };
    var Tea=function(){};
    Tea.prototype.boilWater=function(){
    console.log("把水煮沸")
    };
    Tea.prototype.steepTea=function(){
    console.log("用沸水浸泡茶叶")
    };
    Tea.prototype.pourInCup=function(){
    console.log("把茶水倒进杯子")
    };
    Tea.prototype.addLemon=function(){
    console.log("加柠檬")
    };
    Tea.prototype.init=function(){
    this.boilWater();
    this.steepTea();
    this.pourInCup();
    this.addLemon();
    };
    var coffee=new Coffee();
    coffee.init();
    var tea=new Tea();
    tea.init();


    查看全部
  • 23种goF模式,大致分为3种

    1. 创建型模式

    2. 结构型模式

    3. 行为型模式

    查看全部
  • 关于全局变量问题:

    1、模拟命名空间(声明一个对象,全局变量就是对象的属性;函数就是对象的方法);

    2、闭包 ----(function(){})();该函数自执行,里面定义的变量都是局部变量。


    关于事件绑定浪费问题:

    $item.on 为每个星星绑定都绑定了相同的事件,导致浪费;

    如何解决?事件委托(冒泡),意思就是将事件绑定到父元素中,再执行事件时只要判断事件触发的元素是目标元素即可;

    查看全部
    0 采集 收起 来源:分析现存问题

    2018-11-02

  • 关于如何生成片段?

    1. sublime 中 Tools (new snippet)

    2. 将片段内容放置到<content></content>

    3. 注意:如果想要生成的片段有默认光标定位,用${1:document},后面的document 是默认内容;再按tab光标会到${2};${0}代表tab键后光标最后停留的位置。

    4. 触发该片段的命令为<tabTrigger>html5</tabTrigger>

    5. 该命令使用的文档类型:<scope>text.html</scope>

    6. 按Ctrl + S 进行保存,后缀名必须为sublime-snippet


    查看全部
  • 设计模式定义

    查看全部
  • 根据老师的思路指导,用原生写出来的,没有学jq,终于实现了

    function getByClassname(obj,sclass){

    obj=obj||document;

    var arrname=[];

    var arrname2=[];

    if(obj.getElementsByClassName){

    return obj.getElementsByClassName(sclass);

    }else{

    arrname=obj.getElementsByTagName('*'); 

    for(var i=0;i<arrname.length;i++){

    var a=arrname[i].className.split(' ');

    for(var j=0;i<a.length;j++){

    if(a[i]==sclass){

    return arrname2.push(arrname[i]);

    }

    }

    }

    }

    }

    var rating= (function(){

    //点亮方法

    var init=function (obj,sclass,num){//构造函数


    var oUl=document.getElementById(obj);

    var aLi=getByClassname(oUl,sclass);

    //初始化

    show(num);

    //事件绑定

    oUl.onmousemove=function(ev){

    var Ev=ev||window.event;

    var target=Ev.target||Ev.srcElement;// target是ev带的属性,srcElement是IE兼容写法

    if(target.nodeName.toLowerCase()=="li")//判断发生事件target的属性名称是什么,target的返回值是大写的,所以要转换成效小写

    show(target.index+1);

    }

    oUl.onmouseout=function(ev){

    show(num);

    }

    oUl.onclick=function(ev){

    var Ev=ev||window.event;

    var target=Ev.target||Ev.srcElement;// target是ev带的属性,srcElement是IE兼容写法

    if(target.nodeName.toLowerCase()=="li")//判断发生事件target的属性名称是什么,target的返回值是大写的,所以要转换成效小写

    num=target.index+1;

    }

    function show(num){

    for(var i=0;i<aLi.length;i++){

    aLi[i].index=i;

    if(aLi[i].index<num){

    aLi[i].style.backgroundPosition='0 -25px';

    }else{

    aLi[i].style.backgroundPosition='0 0';

    }

    }

        }


    }

    return {

    init:init

    }

    })();


    rating.init('ul1','raing-item',3);

    rating.init('ul2','raing-item',1);


    查看全部
  • 那个点亮星星的函数不是很懂

    查看全部
  • 什么是snippets,

    (尤指讲话或文字的)小片,片段,零星的话( snippet的名词复数 )

    查看全部
    0 采集 收起 来源:课程介绍

    2018-07-03

  • <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>星级评分</title>
        <style>
            body,ul,li{
                padding: 0;
                margin: 0;
            }
            li{
                list-style-type: none;
            }
            .rating{
                width: 140px;
                height: 27px;
                margin:100px;
            }
            .rating-item{
                float:left;
                width: 28px;
                height: 27px;
                background: url(images/xx.png)no-repeat;
                background-position:0 -27px;
                cursor: pointer;
            }
        </style>
    </head>
    <body>
        <ul class="rating" id="rating">
            <li class="rating-item" title="很不好"></li>
            <li class="rating-item" title="不好"></li>
            <li class="rating-item" title="一般"></li>
            <li class="rating-item" title="好"></li>
            <li class="rating-item" title="很好"></li>
        </ul>
    
        <script src="../js/jquery-1.11.1.min.js"></script>
        <script>
            var num=2;
            var $rating=$("#rating");
            var $item=$rating.find(".rating-item");
    
            // 电亮
            var lightOn=function(num){
                $item.each(function(index){
                    if(index < num){
                        $(this).css("backgroundPosition","0 0");
                    }else{
                        $(this).css("backgroundPosition","0 -27px");
                    }
                })
            };
    
            // 初始化
            lightOn(num);
    
            // 绑定事件
    
            $item.on('mouseover', function(){
                lightOn($(this).index()+1);
            }).on("click",function(){
                num=$(this).index()+1;
            });
            $rating.on('mouseout',function(){
                lightOn(num);
            });
        </script>
    </body>
    </html>


    查看全部
  • 点亮半颗星的原理分析

    查看全部
  • 有哪些设计模式
    查看全部

举报

0/150
提交
取消
课程须知
1、对html,css基础知识已经掌握。 2、对JavaScript和jQuery能够熟练掌握。
老师告诉你能学到什么?
1、开发项目的实现思路 2、评分效果的实现 3、js中的开发技巧

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!