前言

使用$.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(滑动条)的更多相关文章

  1. easyui源码翻译1.32+API翻译全篇导航 (提供下载源码)

    前言 EasyUI每个组件都会有 属性.方法.事件 属性 所有的属性都定义在jQuery.fn.{plugin}.defaults里面.例如,对话框属性定义在jQuery.fn.dialog.defa ...

  2. easyui源码翻译1.32---ProgressBar(进度条)

    前言 使用$.fn.progressbar.defaults重写默认值对象.下载该插件翻译源码 进度条提供了一个反馈显示一个长时间运行的操作进展.可以更新的进展条,让用户知道当前正在执行操作. 源码 ...

  3. easyui源码翻译1.32--datagrid(数据表格)

    前言 此前网上有easyui1.25的源码  应该算是比较老的版本  之后又经历了1.26 . 1.3. 1.31. 1.32 .1.33.1.34  1.33开始支持css3 算是又一个转折  但是 ...

  4. easyui源码翻译1.32--EasyLoader(简单加载)

    前言 扩展自$.fn.datebox.defaults,使用$.fn.datetimebox.defaults重写默认值对象.下载该插件翻译源码 源码 /** * jQuery EasyUI 1.3. ...

  5. easyui源码翻译1.32--Tabs(选项卡)

    前言 使用$.fn.tabs.defaults重写默认值对象.下载该插件翻译源码 选项卡显示一批面板.但在同一个时间只会显示一个面板.每个选项卡面板都有头标题和一些小的按钮工具菜单,包括关闭按钮和其他 ...

  6. easyui源码翻译1.32--Draggable(拖动)

    前言 使用$.fn.draggable.defaults重写默认值对象.下载该插件翻译源码 源码 /** * jQuery EasyUI 1.3.2 * *翻译:qq 1364386878 --拖动 ...

  7. easyui源码翻译1.32--Droppable(放置)

    前言 使用$.fn.droppable.defaults重写默认值对象.下载该插件翻译源码 源码 /** * jQuery EasyUI 1.3.2 * *翻译:lbq --放置 拉伸 */ (fun ...

  8. easyui源码翻译1.32--Resizable(调整大小)

    前言 使用$.fn.resizable.defaults重写默认值对象 下载该插件翻译源码 源码 /** * jQuery EasyUI 1.3.2 * *翻译:qq 1364386878 Resiz ...

  9. easyui源码翻译1.32--Pagination(分页)

    前言 使用$.fn.pagination.defaults重写默认值对象下载该插件翻译源码 该分页控件允许用户导航页面的数据.它支持页面导航和页面长度选择的选项设置.用户可以在分页控件上添加自定义按钮 ...

随机推荐

  1. ServerRelativeUrl与Url

    文件的file.ServerRelativeUrl,是文件相对于网站集的地址,file.Url是文件相对于本网站的地址.

  2. SQL数据库开发知识总结:提高篇

    1.联合结果集 (1) 简单的结果集联合 select FNumber,FName,Fage from T_Employee\ union select FidCardNumber,FName,Fag ...

  3. ###学习《Effective C++》

    开源中国. #@date: 2014-06-16 #@author: gerui #@email: forgerui@gmail.com 前几天买了好几本书,其中有一本是<Effective C ...

  4. POJ 1099 Square Ice

    Square Ice Description Square Ice is a two-dimensional arrangement of water molecules H2O, with oxyg ...

  5. CodeForces 527B

    Description Ford Prefect got a job as a web developer for a small company that makes towels. His cur ...

  6. 最近用到的Linux常用命令总结

    最近用到的Linux常用命令总结 - ls :显示当前目录文件信息 `ls -a -l` - cd :目录跳转 cd .. 上级目录 cd ~ home目录 cd - 最近目录 - cat :在屏幕上 ...

  7. DataGridView绘制序号

    1.找到RowPostPaint事件 2.写入事件 /// <summary> /// 绘制序号 /// </summary> private void dgvStatemen ...

  8. aspx页面状态管理(查询字符串Request与Application)

    1,Request:可以方便的将信息从一个页面传递到另一个页面,通过url传递,不安全,数据量小,只能通过http-get提交的才可以 2,Application对象:()本质上是Hash表)所有访问 ...

  9. CSS3 基本知识

    1.CSS3 简介 CSS 指层叠样式表 (Cascading Style Sheets),用于控制网页的样式和布局,CSS3 是最新的 CSS 标准. 在网页制作时采用层叠样式表,可以有效的对页面的 ...

  10. AngularJS(4)-服务(Service)

    1.$location服务 $location 服务,它可以返回当前页面的 URL 地址 2.$http服务 $http 是 AngularJS 应用中最常用的服务. 服务向服务器发送请求,应用响应服 ...