版权声明:本文为LZUGIS原创文章,未经同意不得转载。 https://blog.csdn.net/GISShiXiSheng/article/details/24304321

用过google earth的朋友,一定记得google earth的一个功能,那就是查看历史影像功能:有一个时间轴滑块,拖动滑块。显示各个时间的影像,例如以下:

没错。就是这个公能,近期做一个WEB的项目,也要用到相似的功能。所以呢就研究了一下,刚開始的时候,记得Jquery UI里面有一个slider的东西,能够实现相似滑块的东西,研究了一下,发现Jquery UI里的slider没法满足我的需求,所以就继续上网search。找了半天。最终找到了selectToUISlider这个Jquery的插件。

selectToUISlider在网上的资料不多。官方演示DEMO例如以下图所看到的:

但是,这种功能没法满足我的需求,研究了半天,最终实现了。

以下就介绍一下我的实现过程啊吧:

1、引入相关js或者样式文件

<script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="js/jquery-ui-1.7.1.custom.min.js"></script>
<script type="text/javascript" src="js/selectToUISlider.jQuery.js"></script>
<link rel="stylesheet" href="css/redmond/jquery-ui-1.7.1.custom.css" type="text/css" />
<link rel="Stylesheet" href="css/ui.slider.extras.css" type="text/css" />

2、在body中定义select内容

<body>
<center>
<form action="#">
<!-- demo 3 -->
<label for="valueImg">请选择影像:</label>
<fieldset>
<select name="valueImg" id="valueImg" style="display:block;">
<optgroup label="1984年">
<option value="10/03" selected="selected">19841003</option>
</optgroup>
<optgroup label="1988年">
<option value="04/21">19880421</option>
</optgroup>
<optgroup label="1989年">
<option value="10/17">19891017</option>
</optgroup>
<optgroup label="1991年">
<option value="05/16">19910516</option>
</optgroup>
<optgroup label="1992年">
<option value="05/18">19920518</option>
<option value="10/25">19921025</option>
</optgroup>
<optgroup label="1998年">
<option value="11/11">19981111</option>
</optgroup>
<optgroup label="1999年">
<option value="05/06">19990506</option>
<option value="10/29">19991029</option>
</optgroup>
<optgroup label="2000年">
<option value="04/30">20000430</option>
</optgroup>
<optgroup label="2001年">
<option value="05/19">20010519</option>
</optgroup>
<optgroup label="2006年">
<option value="06/17">20060617</option>
<option value="08/27">20060827</option>
<option value="09/28">20060928</option>
</optgroup>
<optgroup label="2007年">
<option value="06/09">20070609</option>
<option value="07/01">20070701</option>
<option value="08/09">20070809</option>
<option value="09/22">20070922</option>
</optgroup>
<optgroup label="2008年">
<option value="06/02">20080602</option>
<option value="07/02">20080702</option>
<option value="08/03">20080803</option>
<option value="09/01">20080901</option>
</optgroup>
<optgroup label="2009年">
<option value="08/12">20090812</option>
</optgroup>
<optgroup label="2010年">
<option value="07/06">20100706</option>
<option value="09/11">20100911</option>
</optgroup>
<optgroup label="2011年">
<option value="07/09">20110709</option>
<option value="08/10">20110810</option>
<option value="09/23">20110923</option>
</optgroup>
<optgroup label="2012年">
<option value="06/04">20120604</option>
<option value="08/10">20120810</option>
<option value="08/25">20120825</option>
<option value="09/04">20120904</option>
<option value="09/26">20120926</option>
</optgroup>
<optgroup label="2013年">
<option value="06/03">20130603</option>
<option value="07/25">20130725</option>
<option value="08/09">20130809</option>
<option value="08/25">20130825</option>
<option value="09/25">20130925</option>
</optgroup>
</select>
</fieldset>
<div>
<img src="data:images/mysk/19841003.jpg" width="350" height="350" id="img">
</div>
</form>
</center>
</body>

3、设置显示的样式

<style type="text/css">
body {font-size: 10px; font-family:"Segoe UI","Helvetica Neue",Helvetica,Arial,sans-serif;}
fieldset { border:0; margin: 5px; height: 12em;}
.ui-slider {clear: both; top: 1em;}
</style>

4、初始化并加入slider change事件

<script type="text/javascript">
$(function(){
$('select#valueImg').selectToUISlider({
labels: 19,//设置标签的显示个数
sliderOptions: {
change:function(e, ui) { //定义change事件
$("#img").attr("src","images/mysk/"+jQuery("#valueImg option:selected").text()+".jpg");//修改img的src源
}
}
});
});
</script>

这样。就实现了例如以下图所看到的的效果:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvR0lTU2hpWGlTaGVuZw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" />

但是,当你鼠标拖动的时候以下的图片不会发生变化,这个离我须要的还差一点,我的鼠标拖动滑块时以下的影像也发生变化,找了半天没有找到相相应的事件,所以,就仅仅能在原始js里做文章了,在里面找了找。selectToUISlider.jQuery.js里面的sliderOptions做了一点修改,修改内容例如以下:

	var sliderOptions = {
step: 1,
min: 0,
orientation: 'horizontal',
max: selectOptions.length-1,
range: selects.length > 1,//multiple select elements = true
slide: function(e, ui) {//slide function
var thisHandle = jQuery(ui.handle);
//handle feedback
var textval = ttText(ui.value);
thisHandle
.attr('aria-valuetext', textval)
.attr('aria-valuenow', ui.value)
.find('.ui-slider-tooltip .ttContent')
.text( textval ); //控制原始的select切换
var currSelect = jQuery('#' + thisHandle.attr('id').split('handle_')[1]);
currSelect.find('option').eq(ui.value).attr('selected', 'selected');
//控制Slider的*******************************************************************
var thisIndex = ui.value;//当前节点
var handleIndex = thisHandle.data('handleNum');//操作节点
thisHandle.parents('.ui-slider:eq(0)').slider("values", handleIndex, thisIndex);
},
values: (function(){
var values = [];
selects.each(function(){
values.push( jQuery(this).get(0).selectedIndex );
});
return values;
})()
};

这样,我要的效果就实现了。

在此。给大家共享出来。实用到此功能的读友请多多支持lzugis。

selectToUISlider的更多相关文章

  1. TinyAdmin前端展现框架

    一直在苦苦寻找一个合适的前端框架,少说也看了几十个. ext太重.并且有内存泄露,在IE下就是个悲剧. dhtmlx,速度比較好,开源是GPL不适合企业应用,商业的要钱,倒也不贵万把块钱,可是样式比較 ...

随机推荐

  1. VS2017编译项目出现提示al.exe运行失败的解决方法

    VS2013中编译一切正常,用VS2017打开项目,某个类库出现al.exe运行失败的解决方法,事件查看器中这样描述 “C:\Program Files (x86)\Microsoft SDKs\Wi ...

  2. IOS-CALayer(图层)

    BWLayer.m // // BWLayer.m // IOS_0222_CALayer // // Created by ma c on 16/2/23. // Copyright © 2016年 ...

  3. PyCharm在win10的64位系统安装实例

    搭建环境 1.win10_X64,其他Win版本也可以. 2.PyCharm版本:Professional-2016.2.3. 搭建准备 1.到PyCharm官网下载PyCharm安装包. 2.选择W ...

  4. webstrom 配置eslint 自动修复错误

    1.展示效果 如何给vue项目添加eslint呢,如何自动修复呢? 先展示一下效果: 2.配置步骤 1.安装插件ESLint plugin webstrom 其实有个非常好用的插件,ESLint pl ...

  5. (转载) jQuery页面加载初始化的3种方法

    jQuery 页面加载初始化的方法有3种 ,页面在加载的时候都会执行脚本,应该没什么区别,主要看习惯吧,本人觉得第二种方法最好,比较简洁. 第一种: $(document).ready(functio ...

  6. C/C++文件指针偏移

    body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...

  7. ide 下spingboot 实现热部署

    需要从maven中下载devtools插件pom.xml:step1:修改pom.xml<dependencies><dependency><groupId>org ...

  8. Python的集合框架

    Python内置了四种集合框架(list.tuple.dict.set) list:list是一种有序的集合 list里面的元素的数据类型也可以不同,list元素也可以是另一个list In [28] ...

  9. 转一个有意思的利用存储过程备份恢复PostgreSQL

    [转自 housonglin1213 的博客]http://blog.csdn.net/housonglin1213/article/details/51005540 1.自定义函数脚本备份 CREA ...

  10. jfc在jsp页面画图,不将图片存在服务器端,只存入会话session(可用)

    jfc在jsp页面画图,不将图片存在服务器端,只存入会话session.其中主要用到jfc的一个servlet类. <%@ page contentType="text/html;ch ...