时候我们可能需要用到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小时内与您取得联系。