JQuery入门
JQuery入门
1 jQuery的概述
1.1 jQuery简介
jQuery是一个 JavaScript函数库,它是一个“写的更少,但做的更多”的轻量级 JavaScript 库。jQuery 极大地简化了 JavaScript 编程。学习jQuery需要前期知识:HTML、CSS、JavaScript。
jQuery库具有的特性:HTML 元素选取和操作;CSS 操作;HTML 事件函数;JavaScript 特效和动画;HTML DOM 遍历和修改;AJAX;Utilities
一个简单的应用实例:单击<p>中的文字,其中的文字将被隐藏
1.2 jQuery的使用方法
(1)在http://jquery.com/下载jQuery库文件包,包括两个版本:一份是精简过的(jquery min.js),另一份是未压缩的(供调试或阅读jquery.js)。
(2)将jQuery库文件加入网页中
(3)编写javascript代码
在javascript中jQuery代码的形式:
为了防止文档在完全加载(就绪)之前运行 jQuery 代码,所有 jQuery 函数位于一个 document ready() 函数中。
2 jQuery的应用
2.1 jQuery的基本语法
一、核心函数
(1)jQuery基础语法是:
$(selector).action()
- 美元符号定义 jQuery
- 选择符(selector)“查询”和“查找” HTML 元素
- jQuery 的 action() 执行对元素的操作
例如:
$(this).hide() - 隐藏当前元素
$("p").hide() - 隐藏所有段落
$("p.test").hide() - 隐藏所有 class="test" 的段落
$("#test").hide() - 隐藏所有 id="test" 的元素
jQuery 语法是为 HTML 元素的选取编制的,可以对元素执行某些操作,其语法是XPath与CSS的结合形式。
利用jquery的$()可以引用HTML元素,包括通过id、class、元素名以及元素的层级关系及dom或者xpath条件等方法,且返回的对象为jquery对象(集合对象),jQuery对象不能直接调用dom定义的方法。
在jQuery中还支持方法的连写。所谓连写,即可以对一个jquery对象连续调用各种不同的方法。
例如:
$("p").click(function(){alert($(this).html())})
.mouseover(function(){alert('mouse over event')})
.each(function(i){this.style.color=['#f00','#0f0','#00f'][i]});
小知识:jQuery对象与dom对象的转换。
jQuery和DOM对象是有区别的,不能交换调用对方的方法,即dom对象只能调用dom对象的方法,类似地,jQuery也只能调用jQuery定义的方法。普通的dom对象一般可以通过$()转换成jquery对象。如:$(document.getElementById("msg")),即为jquery对象,可以使用jquery的方法。
由于jquery对象本身是一个集合,若jquery对象要转换为dom对象,则必须取出其中的某一项来实现,一般可通过索引取出,如:$("#msg")[0],$("div").eq(1)[0],$("div").get(0),$("td")[5],这些都是dom对象,可以使用dom中的方法,此时,则不能再使用Jquery的方法。
二、jQuery选择器
jQuery 元素选择器和属性选择器允许您通过标签名、属性名或内容对单个 HTML 元素或HTML元素组进行选择和操作。
1、元素选择器
jQuery 使用 CSS 选择器来选取 HTML 元素。
$("p") 选取 <p> 元素。
$("p.intro") 选取所有 class="intro" 的 <p> 元素。
$("p#demo") 选取 id="demo" 的第一个 <p> 元素。
2、属性选择器
jQuery 使用 XPath 表达式来选择带有给定属性的元素。
$("[href]") 选取所有带有 href 属性的元素。
$("[href='#']") 选取所有带有 href 值等于 "#" 的元素。
$("[href!='#']") 选取所有带有 href 值不等于 "#" 的元素。
$("[href$='.jpg']") 选取所有 href 值以 ".jpg" 结尾的元素。
2.2 jQuery的应用
一、选择器的应用
1、选择器处理HTML元素
(1)改变 HTML 内容
语法:$(selector).html(content)
(2)在当前内容之后添加 HTML 内容
语法:$(selector).append(content)
(3)向所有匹配元素内部的开始处插入内容
$(selector).prepend(content)
(4)当前内容之前添加HTML内容
$(selector).before(content)
(5)当前内容之后添加HTML内容
$(selector).after(content)
2、jQuery集合中对象的获取
jQuery本身是集合对象,对于jQuery集合中元素的提取,可通过索引指定的方法,即使用eq或get(n)方法或者索引号获取,要注意的是,eq返回的是jquery对象,而get(n)和索引返回的是dom对象。例如,要获取第三个<div>元素的内容。有如下两种方法:
因此,获取jQuery集合中对象采用以下几种写法都是正确的:
3、jQuery的集合处理功能
对于jQuery返回的集合内容,无需通过循环遍历对每个对象分别做处理,jQuery已经为集合处理提供相应的方法。
方法一:
//为索引分别为0,1,2的p元素分别设定不同的字体颜色。
$("p").each(function(i){this.style.color=['#f00','#0f0','#00f'][i];})
//实现表格的隔行换色效果
$("tr").each(function(i){this.style.backgroundColor=['#ccc','#fff'][i%2] ;})
方法二:
//为每个p元素增加了click事件,单击某个p元素则弹出其内容
$("p").click(function(){alert($(this).html());})
另外,对于任何集合对象的遍历可采用$.each()方法,语法:$.each(data,callback)。
//为一个json对象的每个属性进行遍历
$.each({name:’jie’,age:20},function(i,n){alert(‘objectName:’ + i+ ‘ objectValue:’ + n);})
4、操作元素的方式
主要包括以下几种方式:
$("#msg").css("background"); //返回元素的背景颜色
$("#msg").css("background","#ccc") //设定元素背景为灰色
$("#msg").height(300); $("#msg").width("200"); //设定宽高
$("#msg").css({ color: "red", background: "blue" });//以名值对的形式设定样式
$("#msg").addClass("select"); //为元素增加名称为select的class
$("#msg").removeClass("select"); //删除元素名称为select的class
$("#msg").toggleClass("select"); //如果存在(不存在)就删除(添加)名称为select的class
二、jQuery中的事件
1、元素的事件绑定
(1)直接调用元素的事件函数绑定
事件是指页面上的元素对某项操作的响应过程。利用jQuery无需在html元素上直接写事件,而可以直接为通过jquery获取的对象添加事件。
如:
$("#msg").click(function(){alert("good")}) //为元素添加了单击事件
//为三个不同的p元素单击事件分别设定不同的处理
$("p").click(function(i){this.style.color=['#f00','#0f0','#00f'][i]})
(2)通过bind()为元素绑定事件
jQuery自定义了事件处理函数bind(),可为HTML元素添加一个或多个事件。
2、事件冒泡
事件在触发后会有两种策略:事件捕获和事件冒泡,大多数浏览器仅支持事件冒泡,jQuery同样也只支持事件冒泡。
事件冒泡的基本原理:在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理 程序或者事件返回true,那么这个事件会向这个对象的父级对象传播,从里到外,直至它被处理(父级对象所有同类事件都将被激活),或者它到达了对象层次 的最顶层,即document对象(有些浏览器是window)。下面通过一个例子来说明。
分为三层:divOne是第外层,divTwo中间层,hr_three是最里层;他们都有各自的click事件,最里层a标签还有href属性。
运行页面,点击“点击我”,会依次弹出:我是最里层---->我是中间层---->我是最外层---->然后再链接到百度。这就是事件冒泡,本来只点击ID为hr_three的标签,但是确执行了三个alert操作。事件冒泡过程(以标签ID表示):hr_three----> divTwo----> divOne 。即从最里层冒泡到最外层。
事件冒泡的阻止:
(1)调用方法event.stopPropagation():
当再点击“点击我”,会弹出:我是最里层,然后链接到百度。
Event.stopPropagation()的作用是,在事件处理过程中,阻止了事件冒泡,但不会阻击默认行为(例子中的超链接的跳转)。
(2)通过return false
当再点击“点击我”,会弹出:我是最里层,但不会执行链接到百度页面。
return false的作用是:事件处理过程中,阻止了事件冒泡,也阻止了默认行为(比如例子中它就没有执行超链接的跳转)。
还有一个与事件冒泡相关的函数:event.preventDefault(); ,如果把它放在头部<a>的click事件中,点击“点击我”。执行时依次弹出:我是最里层---->我是中间层---->我是最外层,但最后却没有跳转到百度。
event.preventDefault()的作用是:事件处理过程中,不阻击事件冒泡,但阻击默认行为(它只执行所有弹框,却没有执行超链接跳转)
事件冒泡对应触发的是上一层的同一事件。对于事件冒泡,如果父子级元素定义的相同事件时,可通过阻止要求只执行子元素的事件,但也可利用事件冒泡对于父子级元素添加不同事件。
有一个特殊情况:如果#hr_three元素设置成双击事件,则在你单击#hr_three的时候就会冒泡触发#divTwo单击的事件。
小知识:事件处理的两种策略。
当事件发生后,因为事件源本身并没有处理事件的能力,因此,这个事件将开始传播。例如,我们点击一个按钮时,就会产生一个click事件,但按钮本身不能处理这个事件,事件必须从这个按钮传播出去,从而到达能够处理这个事件的代码中(例如我们给按钮的onclick属性赋一个函数的名字,就是让这个函数处理当前的click事件)。 在事件传播过程中,一旦找到一个能够处理它的函数,称这个函数捕捉到了这个事件。
1、事件捕获: 允许多个元素响应事件的一种策略。在事件捕获的过程中,事件首先会交给最外层的元素,接着再交给更具体的元素。
2、事件冒泡:另外一种相反的策略叫时间冒泡。当事件发生时,会首先发送给最具体的元素,在这个元素获得响应机会之后,事件会向上冒泡到更一般的元素。事件冒泡有时候会产生副作用,导致始料不及的行为。
假设一个元素element1,它有一个下级元素element2。如图:
这两个元素都绑定了click事件,如果用户点击了element2,它在element1和element2上都触发了click事件,那这两个事件处理程序哪个先执行呢?事件顺序是什么?
事件捕获:当你使用事件捕获时,父级元素先触发,子级元素后触发,即element1先触发,element2后触发。如图:
当你使用事件冒泡时,子级元素先触发,父级元素后触发,即element2先触发,element1后触发。如图:
jQuery中几个自定义的事件:
(1)ready(fn):当DOM载入就绪时立刻调用所绑定的函数。
返回值:Object
参数-fn:要在DOM载入就绪时执行的参数
在进行事件捕获的时候,常常需要捕获组合的用户操作,并且以多个函数作为响应,这些事件我们称为复合事件。Ready就是常用的复合事件之一。
这是jQuery中响应JavaScript内置的onload事件并执行任务的一种典型方式。可以看作是对window.onload注册事件的替代方法。通过使用这个方法,可以在DOM载入就绪时,而几乎所有的javaScript函数都是需要在那一刻执行。
$(document).ready(function(){alert("Load Success")})
//页面加载完毕提示“Load Success”
就绪事件函数的三种写法:
$(document).ready(function() { //this is the coding... });
$().ready(function() { //this is the coding... });
$(function() { //this is the coding... });
小知识:ready(fn)和onload()事件的区别。
1、当一个文档完全下载到浏览器中时,会触发window.onload事件。而使用$(document).ready()注册的事件处理程序,将在html下载完成并解析为Dom树之后,代码就可以运行,但并不意味着所有关联文件都已经下载完毕。
2、一个页面中一般只有一个onload事件处理程序,而且只能一次保存对一个函数的引用;而$(document).ready()是可以有多个。
3、一般来说$(document).ready()都要优于使用onload事件处理程序。但是如果关联文件还没有加载完成,则类似图像高度、宽度的属性的调用就会有问题,因此需要在不同的时候选择合适的方法。
需要注意的是,如果body标签的onload事件已经注册了某个函数 则$()事件注册的函数将不会被执行。
(2)bind(eventtype,fn),unbind(eventtype): 事件的绑定与反绑定
对每一个匹配的元素中(添加)删除绑定的事件。
语法:bind(type, [data], fn)
参数data:是作为event.data属性值传递给事件对象的额外数据对象。
参数fn:是绑定到每个选择元素的事件中的处理函数。
如果要在一个元素中绑定多个事件,可以将事件用空格隔开。
例如:
$("p").bind("click", function(){alert($(this).text());}); //为每个p元素添加单击事件
$("p").unbind(); //删除所有p元素上的所有事件
$("p").unbind("click") //删除所有p元素上的单击事件
(3)hover(fn1,fn2):一个模仿悬停事件(鼠标移动到一个对象上面及移出这个对象)的方法。它是进行交互处理的时候用到复合事件。
当鼠标移动到一个匹配的元素上面时,会触发指定的第一个函数。当鼠标移出这个元素时,会触发指定的第二个函数。
//当鼠标放在表格的某行上时将class置为over,离开时置为out。
$("tr").hover(function(){
$(this).addClass("over");
},
function(){
$(this).addClass("out");
});
(4)toggle(evenFn,oddFn): 每次点击时切换要调用的函数。它是进行交互处理的时候用到复合事件。
如果点击了一个匹配的元素,则触发指定的第一个函数,当再次点击同一元素时,则触发指定的第二个函数。随后的每次点击都重复对这两个函数的轮番调用。
//每次点击时轮换添加和删除名为selected的class。
$("p").toggle(function(){
$(this).addClass("selected");
},function(){
$(this).removeClass("selected");
});
(5)trigger(eventtype): 在每一个匹配的元素上触发某类事件。
例如:
$("p").trigger("click"); //触发所有p元素的click事件
三、同一函数实现get()和set()方法
jQuery一些函数是可重载的,通过参数传递方式不同,可实现get()和set()两个方法的功能。如:html()、text()、height()、width()、val(),还有事件函数click()、blur()、focus()、select()、submit() 等。
//返回id为msg的元素节点的html内容。
$("#msg").html();
//将“<b>new content</b>” 作为html串写入id为msg的元素节点内容中,页面显示粗体的new content
$("#msg").html("<b>new content</b>");
//返回id为msg的元素节点的文本内容。
$("#msg").text();
//将“<b>new content</b>” 作为普通文本串写入id为msg的元素节点内容中,页面显示<b>new content</b>
$("#msg").text("<b>new content</b>");
$("#msg").height(); //返回id为msg的元素的高度
$("#msg").height("300"); //将id为msg的元素的高度设为300
$("#msg").width(); //返回id为msg的元素的宽度
$("#msg").width("300"); //将id为msg的元素的宽度设为300
$("input").val("); //返回表单输入框的value值
$("input").val("test"); //将表单输入框的value值设为test
$("#msg").click(); //触发id为msg的元素的单击事件
$("#msg").click(fn); //为id为msg的元素单击事件添加函数
四、Ajax
Ajax让用户页面丰富起来, 增强用户体验,对于Ajax的实现有可能因开发人员而有所差异。jQuery提供一系列Ajax函数来帮助统一这种差异, 并且让调用Ajax更加简单。jQuery提供了几个用于发送Ajax请求的函数,其中最核心也是最复杂的是jQuery.ajax(),所有的其他Ajax函数都是它的一个简化调用,如:$.get、$.post和$().load(),除非需要操作不常用的选项,以获得更多的灵活性,才需要使用jQuery.ajax()。
1、load()
用于载入远程 HTML 文件代码并插入至 DOM 中。默认使用 GET 方式 - 传递附加参数时自动转换为 POST 方式。
语法:$(selector).load(url,[data,[callback]])
使用load()以get方式进行ajax调用,加载html页面内容到指定HTML元素。
使用load()以post方式进行ajax调用,加载html页面到指定HTML元素。
2、get()
通过远程 HTTP GET 请求载入信息。
语法:$.get( url, [data], [callback], [type] )
Returns: XMLHttpRequest。
此函数发送Get请求, 参数可以直接在url中拼接, 比如:
或者通过data参数传递:
回调函数
3、post()
通过远程 HTTP POST 请求载入信息。
语法:jQuery.post( url, [data], [callback], [type] )
Returns: XMLHttpRequest
具体用法和get相同,只是提交方式由"GET"改为"POST"。
4、$.ajax()
通过 HTTP 请求加载远程数据。jQuery 底层 AJAX 实现。大多数情况下你无需直接操作该对象,但特殊情况下可用于手动终止请求。
语法:url,[settings]
Returns: XMLHttpRequest
其中settings是指设置选项,如:
async(默认true);
contentType:(默认: "application/x-www-form-urlencoded") 发送信息至服务器时内容编码类型;
data:发送到服务器的数据,将自动转换为请求字符串格式(key/value)。GET 请求中将附加在 URL 后;
dataType:预期服务器返回的数据类型。如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息来智能判断。
success(data,[[textStatus,] jqXHR]):请求成功后的回调函数。参数:由服务器返回,并根据dataType参数进行处理后的数据;描述状态的字符串。
type: 请求方式 ("POST" 或 "GET"),默认: "GET"。
下面是使用$.ajax()采用post()进行ajax调用的例子。
小知识:json和json的使用。
JavaScript 对象表示法(JavaScript Object Notation)。JSON 是存储和交换文本信息的语法。类似 XML。JSON 比 XML 更小、更快,更易解析。
3 jQuery的扩展
jQuery插件的开发包括两种:
一种是类级别的插件开发,jQuery.extend(object); 为扩展jQuery类本身。即给jQuery添加新的全局函数,相当于给jQuery类本身添加方法,也可理解为添加静态方法,使用时如:$.add(3,4); jQuery的全局函数就是属于jQuery命名空间的函数,另一种是对象级别的插件开发,jQuery.fn.extend(object);即给jQuery对象添加方法,使用时如:$(“#myTxt”).add(3,4)。
小知识:jQuery.fn.extend()中fn。
在jQuery源码中可以发现fn即是prototype:
3.1 类级别插件
类级别的插件开发最直接的理解就是给jQuery类添加类方法,可以理解为添加静态方法。典型的例子就是$.AJAX()这个函数,将函数定义于jQuery的命名空间中。关于类级别的插件开发可以采用如下几种形式进行扩展:
//定义一个全局函数
$.foo()
//定义多个全局函数
//使用jQuery.extend(object);
虽然在jQuery命名空间中,我们禁止使用了大量的javaScript函数名和变量名。但是仍然不可避免某些函数或变量名将于其他jQuery插件冲突,因此,可将一些方法封装到另一个自定义的命名空间。
使用命名空间函数例1:
使用命名空间定义函数例2:
3.2 对象级别插件
对象级别的插件开发需要如下的两种形式:
//形式一
//形式二
//接收参数来控制插件的行为
//提供公有方法访问插件的配置项值
//提供公有方法来访问插件中其他的方法
开发一个插件的基本过程:
一个插件的基本框架:
(1)在JQuery命名空间内声明一个特定的命名
在例子中,我们将声明一个名为“hilight”的插件。
1 $.fn.tableUI = function() {
2 // Our plugin implementation code goes here.
3 };
可以这样调用:$(“#myTable”).tableUI();
(2)接收参数来控制插件的行为
定义奇偶数行的参数:evenRowClass、oddRowClass和activeRowClass。
同时写了接收参数以控件插件的行为。
var options=$.extend(default,options);
其实就是合并多个对象为一个。如果你在调用的时候写了新的参数,就用你新的参数,如果没有写,就用默认的参数。
现在,插件可以这样来调用:
$(’#myTable’).tableUI({
evenRowClass: ‘otherRow’
});
(3)加入插件功能代码
(4)加上版本、作者等信息
四、几个jQuery方法的注解
1、$.browser.浏览器类型
检测浏览器类型。有效参数:safari, opera, msie, mozilla。如检测是否ie:$.browser.isie,是ie浏览器则返回true。
2、$.each(obj, fn):通用的迭代函数。
可用于近似地迭代对象和数组(代替循环)。
如
$.each( [0,1,2], function(i, n){ alert( "Item #" + i + ": " + n ); });
等价于:
var tempArr=[0,1,2];
for(var i=0;i<tempArr.length;i++){
alert("Item #"+i+": "+tempArr[i]);
}
也可以处理json数据,如
$.each( { name: "John", lang: "JS" }, function(i, n){ alert( "Name: " + i + ", Value: " + n ); });
结果为:
Name:name, Value:John
Name:lang, Value:JS
3、$.extend(target,prop1,propN):用一个或多个其他对象来扩展一个对象,返回这个被扩展的对象。这是jquery实现的继承方式。
如:
$.extend(settings, options);
//合并settings和options,并将合并结果返回settings中,相当于options继承setting并将继承结果保存在setting中。
var settings = $.extend({}, defaults, options);
//合并defaults和options,并将合并结果返回到setting中而不覆盖default内容。
可以有多个参数(合并多项并返回)
4、$.map(array, fn):数组映射。
把一个数组中的项目(处理转换后)保存到到另一个新数组中,并返回生成的新数组。
如:
var tempArr=$.map( [0,1,2], function(i){ return i + 4; });
tempArr内容为:[4,5,6]
var tempArr=$.map( [0,1,2], function(i){ return i > 0 ? i + 1 : null; });
tempArr内容为:[2,3]
5、$.merge(arr1,arr2):合并两个数组并删除其中重复的项目。
如:$.merge( [0,1,2], [2,3,4] ) //返回[0,1,2,3,4]
$.trim(str):删除字符串两端的空白字符。
如:$.trim(" hello, how are you? "); //返回"hello,how are you? "
4.jqzoom插件更换图片
官方的代码:
[javascript] view plaincopy
1 var options =
2 {
3 zoomWidth: 400,
4 zoomHeight: 300,
5 xOffset: 5,
6 title: false,
7 lens: true
8
9 };
10
11 $(function() {
12 $(".jqzoom").jqzoom(options);
13 });
自定义的动态更换放大图的代码(也用的jquery):
[javascript] view plaincopy
14 function changeImg(imgFileName) {
15
16 $(".jqZoomWindow").remove();//关键操作1
17 $(".jqZoomPup").remove(); //关键操作2
18
19 $("img[id=img_productMainImg]").attr("src",imgFileName);
20 $("a[id=a_productMainImg]").unbind(); //关键操作3
21 $("img[id=img_productMainImg]").unbind(); //关键操作4
22
23 $("a[id=a_productMainImg]").attr("href",imgFileName).jqzoom(options);
24 }
http://blog.csdn.net/changbird/article/details/5444562
2.jquery-ui
2.1注意事项: 使用jquery-ui的脚本,都必需在 文档准备好之后调用,即:
$(function(){
});
Dialog show方法本身不会显示,要让让其显示需要调用
Dialog(“open”);
JQuery入门的更多相关文章
- jQuery入门(1)jQuery中万能的选择器
jQuery入门(1)jQuery中万能的选择器 jQuery入门(2)使用jQuery操作元素的属性与样式 jQuery入门(3)事件与事件对象 jQuery入门(4)jQuery中的Ajax()应 ...
- jQuery入门(2)使用jQuery操作元素的属性与样式
jQuery入门(1)jQuery中万能的选择器 jQuery入门(2)使用jQuery操作元素的属性与样式 jQuery入门(3)事件与事件对象 jQuery入门(4)jQuery中的Ajax()应 ...
- jQuery入门(3)事件与事件对象
jQuery入门(1)jQuery中万能的选择器 jQuery入门(2)使用jQuery操作元素的属性与样式 jQuery入门(3)事件与事件对象 jQuery入门(4)jQuery中的Ajax()应 ...
- jQuery入门(4)jQuery中的Ajax应用
jQuery入门(1)jQuery中万能的选择器 jQuery入门(2)使用jQuery操作元素的属性与样式 jQuery入门(3)事件与事件对象 jQuery入门(4)jQuery中的Ajax()应 ...
- jQuery入门必须掌握的一些API
jQuery 中文版文档:http://www.css88.com/jqapi-1.9/category/ajax/ jQuery入门,必须掌握以下的API,平时工作中经常会用到.未列出的API,在掌 ...
- Web前端JQuery入门实战案例
前端jquery入门到实战 为什么要学习Jquery?因为生活. 案例: <!DOCTYPE html> <html lang="zh-CN"> <h ...
- jquery(入门篇)无缝滚动
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- 第一百六十二节,jQuery入门介绍
jQuery入门 学习要点: 1.什么是 jQuery 2.学习 jQuery的条件 3.jQuery的版本 4.jQuery的功能和优势 5.其他 JavaScript库 6.是否兼容低版本 I ...
- jQuery入门--- 非常好
jQuery入门------https://blog.csdn.net/dkh_321/article/details/78093788
随机推荐
- excel导入数据库
日常工作中,感觉一些基础知识需要做下笔记,可能是刚毕业的缘故吧,还保持着做笔记的习惯,但根据以往经验,纸质笔记最多保持一年,过后想找已是难过登天.电子版笔记感觉很不错,尤其是发布到网络中.笔记内容是本 ...
- WCF入门(12)
前言 上次写是小半年前的事情了,还在原来的公司,还在原来的项目,同时认识了不少人.外包公司总是有些不适应的地方,总在很闲和很忙之间徘徊.凌晨2点被客户电话叫醒,只为copy一个文件从一台服务器到另一台 ...
- Nginx下Redmine配置
安装redmine依赖的所有ruby包 cd .. gem install bundler #注意是在网站根目录下执行 bundle install --without development tes ...
- Webform之Repeater中的单选和多选的应用以及前段JS的实现
HTML中的代码 <asp:Repeater ID="Repeater1" runat="server"> <HeaderTemplate&g ...
- CSS3中的counter和content属性,一些简单的内容显示就不需要JS去实现了
HTML的代码 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www ...
- Log4Net使用详解
1.Log4Net环境的搭建与基本配置 (1)Log4Net框架介绍 Log4net 是 Apache 下一个开放源码的项目,它是Log4j 的一个克隆版.我们可以控制日志信息的输出目的地.L ...
- android 6.0 SDK中删除HttpClient的相关类的解决方法
一.出现的情况 在eclipse或 android studio开发, 设置android SDK的编译版本为23时,且使用了httpClient相关类的库项目:如android-async-http ...
- 21.Android之SQLite数据库学习
Google为Andriod的较大的数据处理提供了SQLite,他在数据存储.管理.维护等各方面都相当出色,功能也非常的强大.SQLite具备下列特点: 1.轻量级 使用 SQLite 只需要带一个动 ...
- bzoj 3172 后缀数组|AC自动机
后缀数组或者AC自动机都可以,模板题. /************************************************************** Problem: 3172 Us ...
- HDU 1285 确定比赛名次
传送门 确定比赛名次 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...