jquery.parser.js 的 parseOptions 方法

时间:2022-08-23 18:43:54

// target 是DOM元素

// properties 是宿主的属性

$.parser.parseOptions(target,properties);

    /**
* parse options, including standard 'data-options' attribute.
*
* calling examples:
* $.parser.parseOptions(target);
* $.parser.parseOptions(target, ['id','title','width',{fit:'boolean',border:'boolean'},{min:'number'}]);
*/
parseOptions: function(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','minWidth','maxWidth','minHeight','maxHeight'], function(p){
var pv = $.trim(target.style[p] || '');
if (pv){
if (pv.indexOf('%') == -1){
pv = parseInt(pv) || undefined;
}
options[p] = pv;
}
}); if (properties){
var opts = {};
for(var i=0; i<properties.length; i++){
var pp = properties[i];
if (typeof pp == 'string'){
opts[pp] = t.attr(pp);
} else {
for(var name in pp){
var type = pp[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;
}

用到的方法

jQuery(elements)

将一个或多个DOM元素转化为jQuery对象。

attr(name)

取得第一个匹配元素的属性值。通过这个方法可以方便地从第一个匹配元素中获取一个属性的值。如果元素没有相应属性,则返回 undefined 。

jQuery.trim(str)

去掉字符串起始和结尾的空格。返回值:String

stringvar.substr(start [, length ])

一般截取字符串之前都会去掉前后空格。

jQuery.map(array, callback)

作为参数的转换函数会为每个数组元素调用,而且会给这个转换函数传递一个表示被转换的元素作为参数。转换函数可以返回转换后的值、null(删除数组中的项目)或一个包含值的数组,并扩展至原始数组中。

target.style[p]

获取DOM元素style属性的p样式的值

小结

  • data-options 为 plugin 设置属性
  • style 覆盖 data-options
  • properties 覆盖 style

jquery.parser.js 的 parseOptions 方法的更多相关文章

  1. 购物车增加、减少商品时动画效果:jQuery&period;Fly&period;js插件使用方法

    某些电商网站加入购物车和减少购物车商品数量时,有个小动画,以抛物线形式增减,如图:      这里用到了第三方jQuery.Fly.js插件(底层依赖Jquery库,地址:https://github ...

  2. Jquery 模板插件 jquery&period;tmpl&period;js 的使用方法&lpar;1&rpar;&colon;基本语法,绑定&comma;each循环,ajax获取json数据

    jquery.tmpl.js 是一个模板js  ,主要有2个方法 (1):$.template()方法,将一段script或者是Html编译为模板,例如 $.template('myTemplate' ...

  3. 图片延迟加载插件jquery&period;lazyload&period;js的使用方法

    最新版的jquery.lazyload.js已不再是伪的延迟加载了 一.请按照基本使用方法说明设置 //载入JavaScript 文件 <script src="jquery.js&q ...

  4. 使用jquery&period;form&period;js的ajaxsubmit方法提交数据的Bug

    周五同事遇到一个很奇怪的问题,调到下班,虽然问题解决了,但是不知道问题的具体原因,回来翻了翻代码,才发现症结所在,下面就分享出来,供遇到同样问题的同行们参考: 先把问题描述一下,做的功能是使用ajax ...

  5. jQuery&period;media&period;js的使用方法

      该插件可以播放多种类型的多媒体文件包括:Flash, Quicktime, Windows Media Player, Real Player, MP3, Silverlight, PDF等,前提 ...

  6. 【Jquery&plus;Express&period;js】 submit&lpar;&rpar; 方法提交form

    前端页面 .html 生成一个动态模块 Modal <div class="modal fade" id="addStaff" tabindex=&quo ...

  7. Jquery 模板插件 jquery&period;tmpl&period;js 的使用方法&lpar;2&rpar;&colon;嵌套each循环&comma;temp调用&lpar;使用预编译的模板缓存&rpar;

    直接上代码吧 一:主窗口 /*#region SendChooseTargetTemplate 发送候选人主窗口模板*/ var SendChooseTargetTemplate = ''; Send ...

  8. node&period;js报错throw err&semi; &sol;&sol; Rethrow non-MySQL errors e&colon;&bsol;serverTest&bsol;node&lowbar;modules&bsol;mysql&bsol;lib&bsol;protocol&bsol;Parser&period;js&colon;79 解决方法

    今天在用node+angular做后台时,需要使用session保存登陆状态的时候,遇到了此问题,问题直译为非mysql问题,我也在后台取到的登陆用户名和密码,确实不是数据库问题.最后发现在使用ses ...

  9. jQuery&period;cookie&period;js插件了解及使用方法

    jquery.cookie.js插件实现浏览器的cookie存储,该插件是基于jquery开发,方便cookie使用. jquerycookie.js的下载地址 http://plugins.jque ...

随机推荐

  1. 车销宝无线开单PDA 一款互联网&plus;POS神器 无缝与电脑数据同步 无线POS开单解决方案

    1.无线POS开单解决方案是基于后台系统开发的一套系统,它实现了采购入库退货.销售出库退货.盘点调拨等功能. 2.系统通过(WIFI.GPRS.GSM.蓝牙)实时后台库存.客户.商品.价格跟踪等信息, ...

  2. SharePoint中报表选择

    Office 365中制作报表的方式很多. 这里介绍下使用js获取SharePoint List实现报表的一种方法 资源 Jquery 1.8.2 http://blog.jquery.com/201 ...

  3. 厚积薄发,拥抱 &period;NET 2016

    厚积薄发这个词是高三英语老师在高考前写在黑板上,高中三年努力这么久,是时候迎面而上,冲刺向前.所以,一想到.NET 2016,脑海里蹦出的第一个词就是它. .NET 2016 是 .NET 一次质的飞 ...

  4. 【Android开发坑系列】之PopupWindow

    PopupWindow在4.0之前的版本有个系统级别的BUG,必须借助一段自定义的fix代码来修复.其中mPopPm就是PopupWindow实例.java.lang.NullPointerExcep ...

  5. hibernate的save&lpar;&rpar;和persit&lpar;&rpar;之间的区别

    这个问题啊,我在传智的Hibernate 视频上有小段讲解,save() 和persist() 都是持久化的保存,这两个方法在已经开启事物的情况下没多大区别:在不开启事物的时候save()方法会把数据 ...

  6. SqlServer 数据库日志无法收缩处理过程

    今天按常用方法收缩一个测试用的数据库日志,发现没法收缩! dbcc sqlperf(logspace)     USE [dbname] GO ALTER DATABASE [dbname] SET  ...

  7. hdu 3333 树状数组&plus;离线处理

    http://acm.hdu.edu.cn/showproblem.php?pid=3333 不错的题,想了非常久不知道怎么处理,并且答案没看懂,然后找个样例模拟下别人的代码立即懂了---以后看不懂的 ...

  8. springBoot系列教程01:elasticsearch的集成及使用

    1.首先安装elasticsearch 集群环境,参考 http://www.cnblogs.com/xiaochangwei/p/8033773.html 注意:由于我的代码采用的是springbo ...

  9. WinForm

    参考文章:http://blog.csdn.net/clb929/article/list/7 用三层架构来做winform程序: http://blog.csdn.net/clb929/articl ...

  10. WCF中的ServiceHost初始化两种方式

    1 代码方式 using(ServiceHost host=new ServiceHost(typeof(HelloWordService))) { host.AddServiceEndpoint(t ...