jquery星星插件,兼容ie8

tj-star.js

jQuery.fn.rater    = function(options) {

    // 默认参数
    var settings = {
        enabled    : true,        //是否可控
        url        : ‘‘,        //ajax的url
        method    : ‘post‘,    //ajax访问的方式
        min        : 1,        //最小个数
        max        : 5,        //最大个数
//        step    : 1,
        value    : null,        //
        after_click    : null,    //点击事件回调
        before_ajax    : null,    //ajax调用前回调
        after_ajax    : null,    //ajax调用后回调
        title_format    : null,    //title重定义
        image_0    : ‘star_b.jpg‘,    //空白时图片
        image_1    : ‘star_y.jpg‘,    //选中时图片
        size    : 25        //图片大小
    }; 

    var step = 1;
    // 自定义参数
    if(options) {
        jQuery.extend(settings, options);
    }
    // 主容器
    var content    = jQuery(this);
    //公用方法
    var ComFunc = {
            //设置子容器HTML
            setItemHtml : function(select,value,imgSrc){
                if (typeof settings.title_format == ‘function‘) {
                    select.attr(‘title‘ , settings.title_format(value));
                }
                else {
                    select.attr(‘title‘ , value);
                }
                if (settings.enabled){
                    select.css(‘cursor‘,‘pointer‘);
                }
                select.html(‘<img style="width: ‘+settings.size+‘px;height: ‘+settings.size+‘px;" src=‘+imgSrc+‘>‘);
            },
            //星星样式处理
            changeStar :  function (obj){
                   obj.prevAll().find(‘img‘).attr(‘src‘,settings.image_1);
                   if(!valueIsInt){
                       obj.find(‘img‘).attr(‘src‘,settings.image_0);
                        var item    = jQuery(‘<div class="kbq-star-div"></div>‘);
                        var relative_width    = -(settings.size+2)*(obj.nextAll(‘.kbq-star-item‘).size()+1);
                        var _width = settings.size*(settings.value%step);
                        item.css(‘left‘,relative_width);
                        item.css(‘width‘,_width);
                        ComFunc.setItemHtml(item,obj.prevAll(‘.kbq-star-item‘).size()+1,settings.image_1);
                        content.parent().append(item);
                   }else{
                       obj.find(‘img‘).attr(‘src‘,settings.image_1);
                   }
                   obj.nextAll().find(‘img‘).attr(‘src‘,settings.image_0);
                   }
        };

    //星星初始化
    for (var value=settings.min ; value<=settings.max ; value+=step) {
        var item    = jQuery(‘<li class="kbq-star-item"></li>‘);
        ComFunc.setItemHtml(item,value,settings.image_0);
        content.append(item);
    }

    var current_obj = content.find(‘li‘).eq(0);
    var valueIsInt = settings.value%step==0;
    //如果是整数颗星星
    if(valueIsInt)
    {
        current_obj = content.find(‘li‘).eq(settings.value/step-1);
    }else{
        current_obj = content.find(‘li‘).eq(Math.ceil(settings.value/step)-1);
    }
    //如果星星可以操作
    if (settings.enabled) {
        content.find(‘li‘).click(function(){
            var current_number    = jQuery(this).prevAll(‘.kbq-star-item‘).size()+1;
            settings.value = current_number;
            ComFunc.changeStar($(this));
            var current_number    = jQuery(this).prevAll(‘.kbq-star-item‘).size()+1;
            var current_value    = settings.min + (current_number - 1) * step;
            var data    = {
                value    : current_value,
                number    : current_number,
                count    : star_count,
                min        : settings.min,
                max        : settings.max
            }

            // 处理回调事件
            if (typeof settings.after_click == ‘function‘) {
                settings.after_click(data);
            }

            // 处理ajax调用
            if (settings.url) {

                jQuery.ajax({
                    data        : data,
                    type        : settings.method,
                    url            : settings.url,
                    beforeSend    : function() {
                        if (typeof settings.before_ajax == ‘function‘) {
                            settings.before_ajax(data);
                        }
                    },
                    success        : function(ret) {
                        if (typeof settings.after_ajax == ‘function‘) {
                            data.ajax    = ret;
                            settings.after_ajax(data);
                        }
                    }
                });

            }
        }).mouseover(function(){
            ComFunc.changeStar($(this));
        }).mouseout(function(){
            current_obj = content.find(‘li‘).eq(Math.ceil(settings.value/step)-1);
            ComFunc.changeStar(current_obj);
        });
    }

    ComFunc.changeStar(current_obj);//初始化星星数
}

tj-star.css

.kbq-star-item{
    float:left;
    margin-right: 2px;
}
.kbq-star-div{
    position:relative;
    float:left;
    overflow: hidden;
}

用法:

<ul id="scoreComment" style="float:left;padding-left: 0px;"></ul>

    var options = {
        value : 5,
        max : 5,
        size: 25,
        image_0: ctx+‘/vender/jquery/rater-star/star_b.jpg‘,
        image_1: ctx+‘/vender/jquery/rater-star/star_y.jpg‘,
        after_click : function(ret) {
            $scope.$apply(function() {
                $scope.raterStar=ret.value;
          });
        }
    }
    $(‘#scoreComment‘).rater(options);
时间: 2024-10-26 03:32:23

jquery星星插件,兼容ie8的相关文章

jquery选择器 — 浏览器兼容ie8定位问题

今天遇到一个问题: <input type="text" id="valCurrent" value="当前"></input> <input type="text"value="第一"/> <input type="text" value="第二"/> <input type="text" v

兼容IE8以下浏览器input表单属性placeholder不能智能提示功能,以及使用jquery.validate.js表单验证插件的问题处理

当前很多表单提示使用了表单属性placeholder,可这属性不兼容IE8以下的浏览器,我自己写了一个兼容处理js // 兼容IE8以下浏览器input不能智能提示功能 if(navigator.appName == "Microsoft Internet Explorer" && (navigator.appVersion.match(/7./i)=="7." || navigator.appVersion.match(/8./i)=="

jQuery ajax 动态append创建表格出现不兼容ie8

很多情况下,通过js(jQuery1.10)动态来创建一些样式,对页面的动态交互来说是很方便的 但是不同的浏览器针对动态生成的不是很兼容,在此遇见的不兼容ie8,跟各位分享下 代码: json数据 data.json [{"name":"ajax","job":"manong"},{"name":"js","job":"diaosi"}] html

jQuery validate兼容IE8写法

最近做项目的时候遇到一个validate插件在IE8下面点击submit按钮没有执行检查的BUG 在chrome和FF,还有IE9以上都可以.百度了好多文章都没有找到解决方法,后面自己测试找到了问题. 在IE8下面点击 input type=submit 的按钮,不能触发检测.换一种实现方式就可以了. // 兼容IE8写法: $('#login-btn').click(function(){ $('#loginForm').submit(); }); 我们不用默认的submit input按钮,

ie7和ie8 select使用jquery clone不兼容处理

本文解决方案基于http://blog.csdn.net/zzx3q/article/details/8017794 在ie7和ie8下,用jquery clone复制一个select,复制的select是本体的select初始化时的一个副本,无法复制目前本体select选择. 解决方案: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert ti

【转】让Bootstrap 3兼容IE8浏览器

FROM : http://www.ijophy.com/2014/05/bootstrap3-compatible-with-ie8.html 最近在研究Bootstrap(官方,Github)这个优秀的前端框架,Bootstrap最开始是Twitter团队内部的一个前端框架,所谓前端框架就是一个CSS/HTML框架,框架里面有下拉菜单.按钮组.按钮下拉菜单.导航.导航条.面包屑.分页.排版.缩略图.警告对话框.进度条.媒体对象等.Bootstrap他们预先定义好,等要进行正式制作网页的时候,

让Bootstrap 3兼容IE8浏览器

http://www.ijophy.com/2014/05/bootstrap3-compatible-with-ie8.html 看到这篇文章有越来越多的人看,我决定给大家节省时间,废话少说.有几个点大家要注意. 1.本地调试需要Web Server(如IIS.Apache,Nginx),单纯地本地打开文件不能看到兼容效果. 2.如果你发现已经引用了respond.js和Bootstrap,仍无效果,请查看你的Bootstrap是否使用了CDN文件.(详情看第4点) 3.本文主要针对Boots

带多种过渡动画的响应式jQuery幻灯片插件

Nivo-Slider是一款非常强大的响应式jQuery幻灯片插件.该幻灯片插件内置有16种不同的动画过渡效果.它提供了丰富的参数来控制幻灯片的播放.它使用简单,并且可以兼容IE8浏览器. 在线预览   源码下载 使用方法 使用Nivo-Slider幻灯片需要引入nivo-slider.css,jQuery(1.7+)和jquery.nivo.slider.js文件. 1 2 3 <link rel="stylesheet" href="css/nivo-slider.

Bootstrap 3兼容IE8浏览器(转)

Bootstrap是一个响应式的布局,你可以在宽屏电脑.普通电脑,平板电脑,手机上都得到非常优秀的布局体验.这种响应式的布局正是通过CSS3的媒体查询(Media Query)功能实现的,根据不同的分辨率来匹配不同的样式.IE8浏览器并不支持这一优秀的Css3特性,Bootstrap在开发文档中写了如何使用进行兼容IE8.但是笔者多次尝试没有成功,IE8的布局是乱的.直到今天忍无可忍,决定再尝试一下,最终获得成功.有些细节没有注意到,导致IE8没法响应式布局. 下面讲解下如何让Bootstrap