easyui源码翻译1.32--Slider(滑动条)
前言
使用$.fn.slider.defaults重写默认值对象。下载该插件翻译源码
滑动条允许用户从一个有限的范围内选择一个数值。当滑块控件沿着轨道移动的时候,将会显示一个提示来表示当前值。用户可以通过设置其属性自定义滑块
源码
/**
* jQuery EasyUI 1.3.2
*
*翻译:qq 1364386878 滑动条
*/
(function ($) {
//初始化
function init(jq) {
var html = $("<div class=\"slider\">"
+ "<div class=\"slider-inner\">"
+ "<a href=\"javascript:void(0)\" class=\"slider-handle\"></a>"
+ "<span class=\"slider-tip\"></span>"
+ "</div>"
+ "<div class=\"slider-rule\"></div>"
+ "<div class=\"slider-rulelabel\"></div>"
+ "<div style=\"clear:both\"></div>"
+ "<input type=\"hidden\" class=\"slider-value\">"
+ "</div>").insertAfter(jq);
var name = $(jq).hide().attr("name");
if (name) {
html.find("input.slider-value").attr("name", name);
$(jq).removeAttr("name").attr("sliderName", name);
}
return html;
};
//调整大小
function _resize(jq, parm) {
var options = $.data(jq, "slider").options;
var slider = $.data(jq, "slider").slider;
if (parm) {
if (parm.width) {
options.width = parm.width;
}
if (parm.height) {
options.height = parm.height;
}
}
if (options.mode == "h") {
slider.css("height", "");
slider.children("div").css("height", "");
if (!isNaN(options.width)) {
slider.width(options.width);
}
} else {
slider.css("width", "");
slider.children("div").css("width", "");
if (!isNaN(options.height)) {
slider.height(options.height);
slider.find("div.slider-rule").height(options.height);
slider.find("div.slider-rulelabel").height(options.height);
slider.find("div.slider-inner")._outerHeight(options.height);
}
}
_a(jq);
}; function _b(jq) {
var options = $.data(jq, "slider").options;
var slider = $.data(jq, "slider").slider;
var mode = options.mode == "h" ? options.rule : options.rule.slice(0).reverse();
if (options.reversed) {
mode = mode.slice(0).reverse();
}
_f(mode);
function _f(mode) {
var rule = slider.find("div.slider-rule");
var rulelabel = slider.find("div.slider-rulelabel");
rule.empty();
rulelabel.empty();
for (var i = 0; i < mode.length; i++) {
var _12 = i * 100 / (mode.length - 1) + "%";
var span = $("<span></span>").appendTo(rule);
span.css((options.mode == "h" ? "left" : "top"), _12);
if (mode[i] != "|") {
span = $("<span></span>").appendTo(rulelabel);
span.html(mode[i]);
if (options.mode == "h") {
span.css({ left: _12, marginLeft: -Math.round(span.outerWidth() / 2) });
} else {
span.css({ top: _12, marginTop: -Math.round(span.outerHeight() / 2) });
}
}
}
};
};
//设置是否禁用
function _setdisable(jq) {
var options = $.data(jq, "slider").options;
var slider = $.data(jq, "slider").slider;
slider.removeClass("slider-h slider-v slider-disabled");
slider.addClass(options.mode == "h" ? "slider-h" : "slider-v");
slider.addClass(options.disabled ? "slider-disabled" : "");
slider.find("a.slider-handle").draggable({
axis: options.mode, cursor: "pointer", disabled: options.disabled, onDrag: function (e) {
var left = e.data.left;
var width = slider.width();
if (options.mode != "h") {
left = e.data.top;
width = slider.height();
}
if (left < 0 || left > width) {
return false;
} else {
var _1a = _2c(jq, left);
_1b(_1a);
return false;
}
}, onStartDrag: function () {
options.onSlideStart.call(jq, options.value);
}, onStopDrag: function (e) {
var _1c = _2c(jq, (options.mode == "h" ? e.data.left : e.data.top));
_1b(_1c);
options.onSlideEnd.call(jq, options.value);
}
});
function _1b(_1d) {
var s = Math.abs(_1d % options.step);
if (s < options.step / 2) {
_1d -= s;
} else {
_1d = _1d - s + options.step;
}
_setValue(jq, _1d);
};
};
function _setValue(_1f, _20) {
var _21 = $.data(_1f, "slider").options;
var _22 = $.data(_1f, "slider").slider;
var _23 = _21.value;
if (_20 < _21.min) {
_20 = _21.min;
}
if (_20 > _21.max) {
_20 = _21.max;
}
_21.value = _20;
$(_1f).val(_20);
_22.find("input.slider-value").val(_20);
var pos = _24(_1f, _20);
var tip = _22.find(".slider-tip");
if (_21.showTip) {
tip.show();
tip.html(_21.tipFormatter.call(_1f, _21.value));
} else {
tip.hide();
}
if (_21.mode == "h") {
var _25 = "left:" + pos + "px;";
_22.find(".slider-handle").attr("style", _25);
tip.attr("style", _25 + "margin-left:" + (-Math.round(tip.outerWidth() / 2)) + "px");
} else {
var _25 = "top:" + pos + "px;";
_22.find(".slider-handle").attr("style", _25);
tip.attr("style", _25 + "margin-left:" + (-Math.round(tip.outerWidth())) + "px");
}
if (_23 != _20) {
_21.onChange.call(_1f, _20, _23);
}
};
function _a(_26) {
var _27 = $.data(_26, "slider").options;
var fn = _27.onChange;
_27.onChange = function () {
};
_setValue(_26, _27.value);
_27.onChange = fn;
};
function _24(_28, _29) {
var _2a = $.data(_28, "slider").options;
var _2b = $.data(_28, "slider").slider;
if (_2a.mode == "h") {
var pos = (_29 - _2a.min) / (_2a.max - _2a.min) * _2b.width();
if (_2a.reversed) {
pos = _2b.width() - pos;
}
} else {
var pos = _2b.height() - (_29 - _2a.min) / (_2a.max - _2a.min) * _2b.height();
if (_2a.reversed) {
pos = _2b.height() - pos;
}
}
return pos.toFixed(0);
};
function _2c(_2d, pos) {
var _2e = $.data(_2d, "slider").options;
var _2f = $.data(_2d, "slider").slider;
if (_2e.mode == "h") {
var _30 = _2e.min + (_2e.max - _2e.min) * (pos / _2f.width());
} else {
var _30 = _2e.min + (_2e.max - _2e.min) * ((_2f.height() - pos) / _2f.height());
}
return _2e.reversed ? _2e.max - _30.toFixed(0) : _30.toFixed(0);
};
//实例化组件
$.fn.slider = function (target, parm) {
if (typeof target == "string") {
return $.fn.slider.methods[target](this, parm);
}
target = target || {};
return this.each(function () {
var slider = $.data(this, "slider");
if (slider) {
$.extend(slider.options, target);
} else {
slider = $.data(this, "slider", {
options: $.extend({},
$.fn.slider.defaults, $.fn.slider.parseOptions(this), target),
slider: init(this)
});
$(this).removeAttr("disabled");
}
_setdisable(this);
_b(this);
_resize(this);
});
};
//默认方法
$.fn.slider.methods = {
//返回滑动条属性
options: function (jq) {
return $.data(jq[0], "slider").options;
},
//返回滑动条属性
destroy: function (jq) {
return jq.each(function () {
$.data(this, "slider").slider.remove();
$(this).remove();
});
},
//设置滑动条大小
resize: function (jq, parm) {
return jq.each(function () {
_resize(this, parm);
});
},
//获取滑动条的值
getValue: function (jq) {
return jq.slider("options").value;
},
//获取滑动条的值
setValue: function (jq, value) {
return jq.each(function () {
_setValue(this, value);
});
},
//启用滑动条控件
enable: function (jq) {
return jq.each(function () {
$.data(this, "slider").options.disabled = false;
_setdisable(this);
});
},
//启用滑动条控件
disable: function (jq) {
return jq.each(function () {
$.data(this, "slider").options.disabled = true;
_setdisable(this);
});
}
};
//解析器
$.fn.slider.parseOptions = function (target) {
var t = $(target);
return $.extend({}, $.parser.parseOptions(target, ["width", "height", "mode",
{
reversed: "boolean",
showTip: "boolean",
min: "number",
max: "number",
step: "number"
}]),
{
value: (t.val() || undefined),
disabled: (t.attr("disabled") ? true : undefined),
rule: (t.attr("rule") ? eval(t.attr("rule")) : undefined)
});
};
//默认属性和事件
$.fn.slider.defaults = {
width: "auto",//滑动条宽度
height: "auto",//滑动条高度
mode: "h",//滑动条高度
reversed: false,//设置为true时,最小值和最大值将对调他们的位置
showTip: false,//定义是否显示值信息提示
disabled: false,//定义是否禁用滑动条
value: 0,//默认值
min: 0,//允许的最小值
max: 100,//允许的最大值
step: 1,//值增加或减少
rule: [],//显示标签旁边的滑块,'|' — 只显示一行
//显示标签旁边的滑块,'|' — 只显示一行
tipFormatter: function (jq) {
return jq;
},
//在字段值更改的时候触发
onChange: function (_38, _39) {
},
//在开始拖拽滑动条的时候触发
onSlideStart: function (_3a) {
},
//在结束拖拽滑动条的时候触发
onSlideEnd: function (_3b) {
}
};
})(jQuery);
示例代码
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Basic Slider - jQuery EasyUI Demo</title>
<link rel="stylesheet" type="text/css" href="../../themes/default/easyui.css">
<link rel="stylesheet" type="text/css" href="../../themes/icon.css">
<link rel="stylesheet" type="text/css" href="../demo.css">
<script type="text/javascript" src="../../jquery-1.8.0.min.js"></script>
<script src="../../plugins2/jquery.parser.js"></script>
<script src="../../plugins2/jquery.draggable.js"></script>
<script src="../../plugins2/jquery.slider.js"></script>
</head>
<body>
<h2>Basic Slider</h2>
<div class="demo-info">
<div class="demo-tip icon-tip"></div>
<div>Drag the slider to change value.</div>
</div>
<div style="margin:10px 0;"></div>
<div style="margin-top:20px;">
<input class="easyui-slider" style="width:300px" data-options="showTip:true">
</div>
</body>
</html>
插件效果
easyui源码翻译1.32--Slider(滑动条)的更多相关文章
- easyui源码翻译1.32+API翻译全篇导航 (提供下载源码)
前言 EasyUI每个组件都会有 属性.方法.事件 属性 所有的属性都定义在jQuery.fn.{plugin}.defaults里面.例如,对话框属性定义在jQuery.fn.dialog.defa ...
- easyui源码翻译1.32---ProgressBar(进度条)
前言 使用$.fn.progressbar.defaults重写默认值对象.下载该插件翻译源码 进度条提供了一个反馈显示一个长时间运行的操作进展.可以更新的进展条,让用户知道当前正在执行操作. 源码 ...
- easyui源码翻译1.32--datagrid(数据表格)
前言 此前网上有easyui1.25的源码 应该算是比较老的版本 之后又经历了1.26 . 1.3. 1.31. 1.32 .1.33.1.34 1.33开始支持css3 算是又一个转折 但是 ...
- easyui源码翻译1.32--EasyLoader(简单加载)
前言 扩展自$.fn.datebox.defaults,使用$.fn.datetimebox.defaults重写默认值对象.下载该插件翻译源码 源码 /** * jQuery EasyUI 1.3. ...
- easyui源码翻译1.32--Tabs(选项卡)
前言 使用$.fn.tabs.defaults重写默认值对象.下载该插件翻译源码 选项卡显示一批面板.但在同一个时间只会显示一个面板.每个选项卡面板都有头标题和一些小的按钮工具菜单,包括关闭按钮和其他 ...
- easyui源码翻译1.32--Draggable(拖动)
前言 使用$.fn.draggable.defaults重写默认值对象.下载该插件翻译源码 源码 /** * jQuery EasyUI 1.3.2 * *翻译:qq 1364386878 --拖动 ...
- easyui源码翻译1.32--Droppable(放置)
前言 使用$.fn.droppable.defaults重写默认值对象.下载该插件翻译源码 源码 /** * jQuery EasyUI 1.3.2 * *翻译:lbq --放置 拉伸 */ (fun ...
- easyui源码翻译1.32--Resizable(调整大小)
前言 使用$.fn.resizable.defaults重写默认值对象 下载该插件翻译源码 源码 /** * jQuery EasyUI 1.3.2 * *翻译:qq 1364386878 Resiz ...
- easyui源码翻译1.32--Pagination(分页)
前言 使用$.fn.pagination.defaults重写默认值对象下载该插件翻译源码 该分页控件允许用户导航页面的数据.它支持页面导航和页面长度选择的选项设置.用户可以在分页控件上添加自定义按钮 ...
随机推荐
- python 笔记(一)
1.Python优点 简单,优雅,明确 强大的模块第三方库 易移植 面向对角 可扩展 2.缺点 代码不能加密 执行速度慢 3.变量定义 第一个字母必须是字母表中的大小写,或下划线.不能以数字为开头. ...
- Ext.Net 布局
Ext.Net 布局 Panel布局类有10种:容器布局,自适应布局,折叠布局,卡片式布局,锚点布局,绝对位置布局,表单布局,列布局,表格布局,边框布局 1,Ext.layout.Cont ...
- struts2中<s:property>的用法
1,访问Action值栈中的普通属性: <s:property value="attrName"/> 2,访问Action值栈中的对象属性(要有get set方法): ...
- Android系统简介(中):系统架构
Android的系统架构栈分为4层,从上往下分别是Applications.Application framework.Libraries & Android Runtime.Linux ...
- [转]从一行代码里面学点JavaScript
现如今,JavaScript无处不在,因此关于JavaScript的新知识也是层出不穷.JavaScript的特点在于,要学习它的语法入门简简单,但是要精通使用它的方式却是一件不容易的事. 来看看下面 ...
- VirtualBox single usermode boot
VirtualBox single usermode boot 当系统因为某些原因无法通过图形界面登录VirtualBox内的系统时,可以通过Grub进入命令行模式/单一用户界面模式. 参考: 1.R ...
- 第3条:用私有构造器或者枚举类型强化Singleton属性
Singleton是指仅仅被实例化一次的类.通过被用来代表那些本质上唯一的系统组件,比如窗口管理器或者文件系统. 在http://www.cnblogs.com/13jhzeng/p/5256424. ...
- mysql常见的hint(转载的)
mysql常用的hint对于经常使用oracle的朋友可能知道,oracle的hint功能种类很多,对于优化sql语句提供了很多方法.同样,在mysql里,也有类似的hint功能.下面介绍一些常用的. ...
- MySQL企业常用集群图解
mysql集群架构图片 1.mysql企业常用集群架构 在中小型互联网的企业中.mysql的集群一般就是上图的架构.WEB节点读取数据库的时候读取dbproxy服务器.dbproxy服务器通过对S ...
- 使用XmlPullParser对xml进行读取
XML文件是一种标记性语言;在开发中经常在接口交互时被用作报文传输或者把自定义的类序列化为XML的形式存储到数据库.正因为XML文件这么常用,使用JAVA对XML文件进行读写操作是每一个开发人员必须掌 ...