前言

使用$.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. 接口和抽象类:Interface、abstract _【转】

    一.接口 接口是C#中很常见的工具,概念什么的就不说了,这里讲几个值得注意的小地方: 1.接口内部只能有函数.属性和事件的声明: interface IParent { void Show(); st ...

  2. 【JavaScript DOM编程艺术(第二版)】笔记

    第1章 javascript简史 1.什么是DOM? 简单的说,DOM是一套对文档的内容进行抽象和概念化的方法.\         第2章 javascript语法 1.内建对象: 内建在javasc ...

  3. 【转】Open Live Writer 插件更新

    一.更新内容 cnblog 页签中增加 Lua 和 Matlab 语法高亮:(SyntaxHighlight 页签中尚未添加) 增加折叠区域插件,见效果展示: 增加 bat 执行文件,直接拷贝插件所需 ...

  4. cisco通过控制口或者通过远程配置交换机

    学而不思则罔,思而不学则殆,每天坚持一小步,则成功一大步 下面我们通过Cisco Packet来模拟交换机和路由器的远程和控制台登录配置交换机. 交换机console口的连接与配置方法 (1),在Ci ...

  5. Appium Android 屏幕滑动

  6. HTML5新增标签属性

    ----- 新类型表单 - email 自动校验输入的是不否是email 邮箱:<input type="email" name="user_email" ...

  7. MySQL中,修改表的某一字段的部分值

    语法:update 表名 set 字段名 = replace(字段名,'替换前内容','替换后的内容') where 条件. 如: 执行sql语句:update student set name = ...

  8. php 中 isset()函数 和 empty()函数的区别

    首先这两个函数都是用来测试变量的状态: isset()函数判断一个变量是否在 如果存在返回true  否则返回false empty()函数判断一个变量是否为空,如果为空返回true 否则返回fals ...

  9. php之面向对象(1)

    讲到面向对象 先回顾下以前的编程思路,所谓编程思路就是根据知识本质原理通过逻辑推理程序的过程,编程思路,讲究的是先明确要做的事情是怎么.离开代码的情况下,自己也要能明白这一件事情怎么做.而不是把代码背 ...

  10. Python设计模式——工厂方法模式(FactoryMethod)

    需求:有一个学雷锋活动,有买米和扫地两个内容,参与的人有大学生和社区志愿者,他们各自的方法不一样. 如果用简单工厂模式实现: #encoding=utf-8 __author__ = 'kevinlu ...