时候我们可能需要用到json文件存储数据,然后通过前台语言直接进行访问。
首先是json文件:
{
"管道": [
{
"ElementId": "标识号",
"GISID": "GISID",
"Label": "编号",
"StartNodeID":"起始节点ID",
"EndNodeID":"终止节点ID",
"StartNodeLabel":"起始节点编号",
"EndNodeLabel":"终止节点编号",
"Physical_PipeDiameter":"管径",
"Physical_PipeMaterialID":"管材",
"Physical_HazenWilliamsC":"海曾威廉C值",
"Physical_Length":"管长",
"Physical_MinorLossCoefficient":"局部阻力系数",
"Physical_InstallationYear":"铺设年代",
"Physical_Address":"地址",
"District":"营销公司",
"DMA":"计量区",
"Zone":"行政区",
"flow":"当前流量",
"velocity":"当前流速",
"headloss":"当前水头损失"
}],
"节点": [{
"ElementId": "标识号",
"GISID": "GISID",
"Label": "编号",
"Physical_Elevation":"地面高程",
"Physical_Depth":"埋深",
"Physical_Address":"地址",
"District":"营销公司",
"DMA":"计量区",
"Zone":"行政区",
"hydraulicGrade":"水压标高",
"pressure":"自由水压",
"demand":"节点流量",
"cl":"余氯浓度",
"age":"水龄",
"source":"供水水源"
}],
"阀门": [{
"ElementId": "标识号",
"GISID": "GISID",
"Label": "编号",
"Physical_Elevation":"地面高程",
"Physical_Depth":"埋深",
"Physical_Diameter":"口径",
"Physical_Status":"阀门状态",
"Physical_Address":"地址",
"District":"营销公司",
"DMA":"计量区",
"Zone":"行政区",
"Physical_InstallationYear":"安装年代"
}],
"水表": [{
"DIAMETER":"口径",
"CALIBER": "表径",
"MATERIAL": "材质",
"DEPTH":"埋深",
"HEIGHT":"地面高程",
"ADDR":"地址",
"WATREGID": "表号",
"USERNAME":"用户名",
"JUNCTION":"接口类型",
"DISTRICT":"行政区",
"MEASUREIN":"营销公司",
"FINISHDATE":"安装日期"
}],
"消火栓": [{
"ElementId": "标识号",
"GISID": "GISID",
"Label": "编号",
"Physical_Elevation":"地面高程",
"Physical_Depth":"埋深",
"Physical_Address":"地址",
"District":"营销公司",
"DMA":"计量区",
"Zone":"行政区",
"Physical_Diameter":"口径",
"Physical_Type":"样式"
}]
}
创建CriteriaQuery.json文件,文件内容如上。
前台代码:
<html>
<head>
<meta charset="GBK"/>
<title></title>
<script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery/jquery-1.4.min.js"></script>
<script type="text/javascript">
$(function (){
$("#btn").click(function(){
$.getJSON("CriteriaQuery.json",function(data){
var $jsontip=$("#jsonTip");
var strHtml="";
$jsontip.empty();
$.each(data.管道,function(infoIndex,info){
for(var o in info){
strHtml +=info[o];
}
//strHtml +=info["ElementId"];
});
$jsontip.html(strHtml);
})
})
})
</script>
</head>
<body>
<div id="divframe">
<div class="loadTitle">
<input type="button" value="获取数据" id="btn"/>
</div>
<div id="jsonTip">
</div>
</div>
</body>
</html>
我这里的jquery用的是微软发布的1.4的js文件,即 http://ajax.microsoft.com/ajax/jquery/jquery-1.4.min.js
json文件与html放在同一个目录下。
运行代码,点击获取数据按钮,就能够在页面上看到遍历json文件所得到的“管道”的所有信息。当然,也可以通过key来获取到json文件的value,即
strHtml +=info["ElementId"];
事件函数列表:
blur() 元素失去焦点 focus() 元素获得焦点 click() 鼠标单击 mouseover() 鼠标进入(进入子元素也触发) mouseout() 鼠标离开(离开子元素也触发) mouseenter() 鼠标进入(进入子元素不触发) mouseleave() 鼠标离开(离开子元素不触发) hover() 同时为mouseenter和mouseleave事件指定处理函数 ready() DOM加载完成 resize() 浏览器窗口的大小发生改变 scroll() 滚动条的位置发生变化 submit() 用户递交表单
绑定事件的其他方式
$(function(){
$('#div1').bind('mouseover click', function(event) {
alert($(this).html());
});
});
取消绑定事件
$(function(){
$('#div1').bind('mouseover click', function(event) {
alert($(this).html());
// $(this).unbind();
$(this).unbind('mouseover');
});
});
给元素绑定click事件,可以用如下方法:
$('#btn1').click(function(){
// 内部的this指的是原生对象
// 使用jquery对象用 $(this)
})
获取元素的索引值
有时候需要获得匹配元素相对于其同胞元素的索引位置,此时可以用index()方法获取
var $li=$('.list li').eq(1);
alert($li.index()); // 弹出1
......
<ul class="list">
<li>1</li>
<li>2</li>
<li>4</li>
<li>5</li>
<li>6</li>
</ul>
fadeIn() 淡入
$btn.click(function(){
$('#div1').fadeIn(1000,'swing',function(){
alert('done!');
});
});
fadeOut() 淡出
fadeToggle() 切换淡入淡出
hide() 隐藏元素
show() 显示元素
toggle() 切换元素的可见状态
slideDown() 向下展开
slideUp() 向上卷起
slideToggle() 依次展开或卷起某个元素
jquery对象的方法会在执行完后返回这个jquery对象,所有jquery对象的方法可以连起来写:
$('#div1') // id为div1的元素
.children('ul') //该元素下面的ul子元素
.slideDown('fast') //高度从零变到实际高度来显示ul元素
.parent() //跳到ul的父元素,也就是id为div1的元素
.siblings() //跳到div1元素平级的所有兄弟元素
.children('ul') //这些兄弟元素中的ul子元素
.slideUp('fast'); //高度实际高度变换到零来隐藏ul元素
通过animate方法可以设置元素某属性值上的动画,可以设置一个或多个属性值,动画执行完成后会执行一个函数。
$('#div1').animate({
width:300,
height:300
},1000,'swing',function(){
alert('done!');
});
参数可以写成数字表达式:
$('#div1').animate({
width:'+=100',
height:300
},1000,'swing',function(){
alert('done!');
});
尺寸相关、滚动事件
1、获取和设置元素的尺寸
width()、height() 获取元素width和height innerWidth()、innerHeight() 包括padding的width和height outerWidth()、outerHeight() 包括padding和border的width和height outerWidth(true)、outerHeight(true) 包括padding和border以及margin的width和height
2、获取元素相对页面的绝对位置
offset()
3、获取浏览器可视区宽度高度
$(window).width(); $(window).height();
4、获取页面文档的宽度高度
$(document).width(); $(document).height();
5、获取页面滚动距离
$(document).scrollTop(); $(document).scrollLeft();
6、页面滚动事件
$(window).scroll(function(){
......
})
1、html() 取出或设置html内容
// 取出html内容
var $htm=$('#div1').html();
// 设置html内容
$('#div1').html('<span>添加文字</span>');
2、prop() 取出或设置某个属性的值
// 取出图片的地址
var $src=$('#img1').prop('src');
// 设置图片的地址和alt属性
$('#img1').prop({src: "test.jpg", alt: "Test Image" });
jquery循环
对jquery选择的对象集合分别进行操作,需要用到jquery循环操作,此时可以用对象上的each方法:
果您是JavaScript开发人员,您可能知道jQuery。但是你知道怎么用它来创建你自己的插件吗?请继续阅读!
对于那些不知道的人来说,jQuery是一个包含许多功能的JavaScript库,并且非常小而且速度快。它还包含一个易于使用的API,可以在所有浏览器上兼容,并且可以更轻松地进行HTML遍历,动画,DOM操作和事件处理。它不仅可扩展而且耐用。因此,自开发以来,客户端脚本编写变得更加容易。
jQuery由原型对象组成,在某些时候,可能需要一些操作和扩展。出于同样的目的,jQuery插件被设计为对象继承添加的任何其他方法的一种方式。不仅如此,这些附加方法不是孤立的,而是在创建jQuery对象时使用其余方法(已经继承)调用。jQuery插件可以以jQuery库中存在的各个方法的形式单独提供。每个方法都是一个插件。但是,如果有新的东西,插件也可以自定义创建,这不是一项非常困难的任务。
要了解jQuery的工作原理,您需要按照以下步骤操作:
$.fn.pluginName=function() {
this.css( "color", "yellow" );
};
$( "a" ).pluginName();
该插件开始其身份创建,如上所示。pluginName 由正在创建的插件的名称替换,后跟一个函数和括号中的任何必需参数。此外,function(this.css)中的下一个语句 是确保将CSS应用于某些文本以使其呈黄色。最后一行调用插件函数将所有链接变为' a'标记为黄色。
jQuery插件总是在假设using $ 使用jQuery函数的别名的情况下编写 。 $ 在JavaScript库中非常有名。因此,当需要多个jQuery库时,使用时可能会出现冲突 $。因此,为了使我们能够将jQuery与其他插件一起使用$,我们必须将代码放在立即调用的函数的表达式中。接下来是jQuery的传递,然后命名它的参数 $。
在JavaScript中,函数包含几个变量和其他函数,这些函数可以主要在函数内部访问,从而使元素变为私有。立即调用函数efxpressions提供了访问私有变量和方法的最佳方法。
在$解决alias()问题后,可以在此处理解添加私有方法或变量:
(function($) {
$.fn.pluginName=function() {
// private variables
var privatevar1='';
var privatevar2='';
// private methods
var myPrivateMethod=function() {
// do something ...
}
})(jQuery);
只能通过立即调用函数添加私有变量并允许其使用:
(function($){
var col=“yellow”;$.fn.pluginName=function() {
this.css("color", col);
return this;
};
}(jQuery));
私有方法只能在函数范围内调用。只有其他私有方法或公共方法才有权调用这些私有方法。这也适用于访问私有变量。
向jQuery插件添加方法是在私有方法中完成的。唯一的区别是方法的执行。当方法提供' this'运算符时,该方法变为公共方法。这样,它也可以在函数范围之外访问。添加此类公共方法的目的可以是在范围外执行函数,也可以从范围外访问公共变量和方法。
(function($) {
$.fn.pluginName=function() {
// public methods
this.initialize=function() {
// do something ...
return this;
};
this.myPublicMethod=function() {
// do something ...
};
})(jQuery);
在您继续添加插件时,有些情况下您的插件开始变得复杂。因此,最好让您的插件开始接受一些选项并使其可自定义。
(function($) {
$.fn.pluginName=function(options) {
var defaults={
color: "white",
'background-color': "#556b2f"
};
var settings=$.extend({}, defaults, options);
return this.css({
color: settings.color,
'background-color': settings.background - color
});
};
}(jQuery));
结合所有技术,编译以下示例插件:
(function($) {
$.fn.pluginName=function(options) {
var defaults={
color: "white",
'background-color': "#556b2f"
};
var settings=$.extend({}, defaults, options);
if (this.length > 1) {
this.each(function() { $(this).pluginName(options) });
return this;
}
// private variables
var privatevar1='';
var privatevar2='';
// private methods
var myPrivateMethod=function() {
// do something ...
}
// public methods
this.initialize=function() {
// do something ...
return this;
};
this.myPublicMethod=function() {
// do something ...
};
return this.initialize();
}
})(jQuery);
这里,方法' each()'用于循环遍历元素集合。此外,此方法的返回值是this.append() 方法,它接受回调,返回时我们将能够看到集合中要追加的元素。
*请认真填写需求信息,我们会在24小时内与您取得联系。