jquery左键拖动选值,类似html5的input[range]

最近项目要做一个类似于html5里的Input[range]滑动选值的效果,如图,原理很简单,拖动时目标随鼠标位置变化,不过中间也遇到了一个问题,在chrome下没问题,在FF和IE下,只有右键能很好的拖动,左键拖动一下就不能动了,最后无意中发现FF和IE在对<a>标签的拖动有特殊的处理,无奈,不用<a>标签就是了。

同时支持多个同时调用,如果放开鼠标时目标处于中间,则会自动移动到最近的图点处。

资源可在http://download.csdn.net/detail/guyuehu452/4317644下载,不用积分。

腾讯微博:http://t.qq.com/guyue1106/profile?pgv_ref=im.minicard.title&ptlang=2052

新浪weibo:http://weibo.com/1714234642/profile?leftnav=1&wvr=3.6&mod=personinfo

欢迎互加!

html代码:

<dl>
      <dt>你能接受的着装要求是?</dt>
     <dd><span> 休闲型</span><span class="dragBox"><em class="dragImg"></em></span><span>制服型</span></dd>
 </dl>

css样式就不多说了;

js代码:

$(function(){
    $('.dragBox').dragSel();   
})

(function($){
    $.fn.dragSel= function(){
        $(this).each(function(i,item){
            var pram ={
                _left:$(item).offset().left,
                _top:$(item).offset().top,
                _x: 0,
                _y: 0,
                flg: false,
                $em:$(item).find('em'),//拖动对象
                _al:0
            };
            pram.$em.mousedown(function(e){
                if(e.button==0)pram.flg = true;
            });
            $(document).bind('mousemove',function(e){
                e = e || window.event;
                if(pram.flg){
                    pram.$em.selectUnable()
                    pram._x= e.pageX;
                    pram._y= e.pageY;
                    pram.$em.css({left:pram._x - pram._left});
                }
            });    
            $(document).mouseup(function(e){
                e = e || window.event;
                pram.flg = false;
                clearInterval(pram.s);
                pram._al = pram.$em.offset().left - pram._left +5;
                var n = $(item).width()/8;
                if(pram._al<n){
                    pram.$em.animate({left:"0"});
                }else if(pram._al<n*3){
                    pram.$em.animate({left:n*2-5+"px"});
                }else if(pram._al<n*5){
                    pram.$em.animate({left:n*4-5+"px"});
                }else if(pram._al<n*7){
                    pram.$em.animate({left:n*6-5+"px"});
                }else{
                    pram.$em.animate({left:n*8-5+"px"});
                }
            });
        })
    }
    
    //防止拖动中选中
    $.fn.selectUnable=function(){
        if(document.selection){//IE ,Opera
            if(document.selection.empty)
                document.selection.empty();//IE;
            else //Opera
                document.selection = null;
        }else if(window.getSelection){//FF,Safari
            window.getSelection().removeAllRanges();
        }
    };
})(jQuery);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值