$.parser.setParserOptions()的实现

属性优先级
自定义属性(如下面的cursor,revert等)>style[属性]>data-options

 function setParserOptions(target,properties){
       var t=$(target);
       var options={};
       var s= $.trim(t.attr("data-options"));
        if(s){
             if(s.substring(0,1)!="{"){
                 s="{"+s+"}";
             }
            options= (new Function('return '+ s))();//获得属性对象
        }
        $.map(['width','height','left','top','maxHeight','maxWidth'],function (p){
            var pv=target.style[p];
            if(pv){
                if(pv.indexOf('%')==-1){
                 pv=parseInt(pv);
                    if(isNaN(pv))
                     pv="undefined";
                }
                options[p]=pv;//确保有值的属性才添加
            }

        })

        if(properties){
            var opts={};
            for(var i=0;i<properties.length;i++){
                 var p=properties[i];
                  if(typeof p =='string'){
                     opts[p]=t.attr(p);
                 }else {
                     for (var name in p){
                         var type=p[name];
                         if(type=='boolean'){
                          opts[name]=t.attr(name) ? (t.attr(name)=='true') : undefined;
                         }else if(type=='number'){
                             opts[name]= t.attr(name)=='0' ? 0 :parseFloat(t.attr(name))  ||  undefined;
                         }

                     }
                 }

             }
            $.extend(options,opts);

        }

           return options;

    }
    var o;
    $('.tt').each(function (){
        var properties=['cursor','handle','axis',
            {'revert':'boolean','deltaX':'number','deltaY':'number','edge':'number','delay':'number'}];
        o=setParserOptions(this,properties)
    })
    console.log(o);
---------->>>>

调用结果如下

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值