属性优先级
自定义属性(如下面的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);
---------->>>>
调用结果如下