Web静态开发 JQuery

伍章 JQuery

1节
介绍JQuery和顶级对象

<<锋利的JQuery>>
JQuery官网: http://jquery.com (下载jquery工具)
JQuery在线API: http://api.jquery.com
http://api.jquery.com/api(xml文件)
JQuery UI: http://jqueryui.com

什么是JavaScript框架库?
普通javascript的缺点:每种控件的操作方式不统一,不同浏览器下有区别,要编写跨浏览器的程序非常麻烦。因此出现了很多javascript的封装库
常见的javascript框架库:
Prototype YUI Dojo ExtIS JQuery等这些库对JavaScript进行了封装,简化了开发,但内部还是用Javascript实现的
JQuery就是JavaScript语法写的一些函数类,内部任然是用js实现的,所以并不是代替js,使用JQuery的代码、编写JQuery的扩展插件等仍然需要js的技术,JQuery本身就是一堆js函数。JQuery是最火的js库,JQuery的扩展插件也是非常多

常用的JavaScript库:
1 Prototype: http://www.prototypejs.org
2 Dojo: http://dojotoolkit.org
3 YUI(The Yahoo>User Interface Library): http://developer.yahoo.com/yui

jQuery就是JavaScript的一堆函数库
JavaScript能做什么,JQuery就能做什么
JQuery的特点: Write Less Do More
隐式迭代
链式编程
插件丰富,开源,免费

JQuery中最常用的顶级对象即$对象,要想使用JQuery的方法必须通过$对象。只有将普通的Dom对象封装成JQuery对象,然后才能调用JQuery中的各种方法。
$是JQery的简写,在代码中可以使用JQuery代替$,但是一般为方便大家都直接使用$
写注释,后续JQuery的代码会越来越多,所以必要的注释一定要写.
jquery也是在操作页面的一些元素,和dom类似,dom代码比较多

<script type="text/javascript" src="jquery-1.8.3.js"></script> //压缩的也一样
//0
onload=function(){
alert(‘页面加载完了00‘);
};
//1
$(document).ready(fucntion(){ //document是dom对象,放入$(jQuery)就变成jQuery对象,点出ready()方法
alert(‘页面加载完了11‘);
});
//2
$(window).load(function(){
alert(‘页面加载完了22‘);
});
//3
$(function(){ //用jQuery也一样
alert(‘页面加载完了33‘);
});

2节
两个遍历方法

$(fun); 相当于 $(document).ready(fun); //只需要dom元素加载完毕即触发
$(window).load(fun); //需要等待页面完全加载完毕才会触发
$.map(array,callback(element,index)); //主要用于遍历数组
$.each(array,fn); //主要用于遍历键值对(map和each可以相互遍历,但是在有些浏览器可能不支持)

//1
//将一个数组的元素翻倍 并返回一个新的数组
var arr=[1,2,3,4,5];
var newarr = $.map(arr,function(ele,index){ //map方式自动遍历
//alert(arguments.length); //用arguments接受匿名方法的参数
//获取该方法中有几个参数,分别是什么
//alert(arguments[0]+"=="+arguments[1]+"==="+arguments[2]); //得知 第1个参数是元素,第2个参数是索引,第3个参数undifined
//alert(ele+‘===‘+index); //输出元素和索引
return ele*2; //返回一个新的数组
});
alert(newarr);
//google调试---开发工具---F5---F11---跳到当前引用jquery文件的map()方法
//ie调试---开发工具---脚本---调试启动---
//2
//将一个数组中索引>3的元素的值翻倍,其余值不变,并返回一个新数组

$.each(array,fn);
var dict={"name":"xiaoming","age":"23"};
$.each(dict,function(key,value){
alert(key+‘====‘+value);
});

3节
dom对象和jQuery对象互转

$.trim(字符串) //切掉两边空格
trimLeft=/^[\s\xAO]+/; trimRight=/[\s\xAO]+$/; //ie一些版本不支持\s空格,\xAO也表示空格

Dom对象如果想调用jQuery的方法必须先转换为JQuery对象
Dom对象:文档数中的对象都是dom对象
jQuery对象:把dom对象包装后就得到jQuery对象

//Dom jQuery混合方式
$(dvObj).css(‘backgroundColor‘,‘red‘); //dom对象转jQuery对象
var dvJqObj=$(dvObj);
var dvDomObj=dvJqObj.get(0); //jQuery对象转Dom对象
$(dvObj)[0].style.backgroundColor=‘gray‘; //jQuery对象转Dom对象

//JQuery方式
$(‘#btn‘).click(function(){
$(‘#dv‘).css(‘backgroundColor‘,‘red‘);
});

<input type="button"/>
<div></div>

//哪些不需要转JQuery对象 Array(不是dom元素)

4节
选择器

id选择器
$(‘#dv‘).click(function(){
//$(this).text(‘这是一个层‘); //text相当于dom中innerText;html()相当于innerHTML
//$(this).css(‘‘,‘‘);
$(this).text(‘这是一个层‘).css(‘‘,‘‘); //链式编程
alert($(this).text()); //不设置,就是取值
});

标签选择器
//为某个按钮注册一个单击事件,单击的时候设置页面上所有的p标签中显示文字为“我们都是好孩子”。(隐式迭代)
$(‘p‘).text(‘我们都是好孩子‘);//隐式迭代

$(‘div.cls‘).text(‘我去‘); //标签加类选择器
$(‘.cls‘).text(‘帅气‘); //类样式选择器

5节
各种选择器和案例

//1多条件选择器
$(‘p,div,span.cls‘).css(,);
<p>p</p>
<div>div</div>
<span class=‘cls‘>span<span>
//2层次选择器
$(‘div p‘).css(,); //获取层中所有p标签
$(‘div>p‘).css(,); //获取层中直接的子元素
$(‘div+p‘).css(,); //获得层后面的直接的p元素
$(‘div~p‘).css(,); //获取层后面的所有的p元素
$(‘*‘); //获取所有元素
$(‘div‘).next().css(,); //获得层后面直接的兄弟元素
$(‘div‘).nextAll().css(,); //获得层后面所有的兄弟元素
$(‘div‘).prev().css(,); //获得层前面直接的兄弟元素
$(‘div‘).prevAll().css(,); //获得层前面所有的兄弟元素
$(‘div‘).siblings().css(,); //获得当前元素的所有兄弟元素

//ul球队,鼠标移到li上,该li变红色,点击时,之前的所有li变黄,之后的所有li变蓝,自己不变
$(this).css(,).siblings().css(,);
$(this).prevAll().css(,).end().nextAll().css(,); //因为前面返回的是集合,就断链了,需要end()修复了,才能继续进行链式编程

6节
网页开关灯和评分案例

//1 评分案例
$(‘table tr td‘).mouseover(function(){
$(this).text(‘★‘).prevAll().text(‘★‘).end().nextAll().text(‘☆‘).mouseout(function(){ //因为中间断链了,end()返回链被破坏前得对象(当前就是鼠标移入时的对象)
$(‘td‘).text(‘☆‘);
});
});
<table class="cls">
<tr><td>☆</td>...</tr>
</table>

//jQuery的迭代(包装集)
//2 判断该元素是否存在
if($(‘#btn‘).length>0){
alert(‘存在‘);
}else{
alert(‘不存在‘);
}

//3 页面实现开关灯的效果
addClass 添加样式
removeClass 移除样式
toggleClass 切换样式的显示
hasClass 判断是否应用了样式

//31 关灯
$(‘#btnoff‘).click(function(){
$(‘body‘).addClass(‘cls‘); //.cls{background-clor:black;}
});
//32 开灯 removeClass
//33 用一个按钮实现开灯和关灯
if($(‘body‘).hasClass(‘cls‘)){
$(‘body‘).removeClass(‘cls‘);
}else{
$(‘body‘).addClass(‘cls‘);
}
//34 toggleClass
$(‘body‘).toggleClass(‘cls‘); //切换样式

7节
过滤器和案例练习

$(‘div:first‘) $(‘div‘).first() 选取层中第一个元素
$(‘div:last‘) $(‘div‘).last() 选取层中最后一个个元素
$(‘div:not(.cls)‘); 获取没有.cls样式的元素
$(‘div:even‘)偶数 :odd(奇数) 表示的是偶数,实际显示效果奇数
$(‘div:eq(5)‘) :gt() :lt()
$(‘div:gt(3):lt(2)‘) 索引>3 && <2的元素
$(‘:header‘) 获取所有h标签 $(‘h1,h2,h3,...‘)

margin-bottom:10px; //设置外边距(层之间的距离)
$(‘#tab tr:gt(0):lt(3)‘).css(‘fontSize‘,‘28px‘);
//1表格字体大小及颜色的过滤器案例
//2点击按钮。表格变色,奇红偶黄,点击的变蓝,其他白色

8节
相对定位和属性过滤器

//相对定位
$(‘p‘,‘div‘) //从层中去找p标签
$(‘td:odd‘,$(this)).css(,)
$(‘td‘,$(this).sliblings()).css(,)

//属性、表单过滤器
$(‘#div input[name]‘).css(,) //获取层中有name属性的input标签
$(‘#div input[name=n]‘).css(,) //获取层中name属性为n的input标签
$(‘#div input[name!=n]‘).css(,) //获取层中name属性不是n的input标签
$(‘#div input[name^=n]‘).css(,) //获取层中name属性以n开头的input标签
$(‘#div input[name$=n]‘).css(,) //获取层中name属性以n结束的input标签
$(‘#div input[name*=n]‘).css(,) //获取层中name属性所有的input标签

<input type="button"/>
<div>
<input type="button" name="name"/>
<input type="button" name="n"/>
</div>

//表单对象 属性选择器(过滤器)
$(‘#form1 :enabled‘) //获取表单内所有启用的元素(有空格)
$(‘#form1:enabled‘) //表示的是选中了的form1表单
$(‘#form1 :disabled‘) //获取表单内所有禁用的元素
$(‘input:checked‘) //获取input标签中选中了的元素(没有空格) Radio、CheckBox
$(‘select:selected‘) //获取选项中选中了的元素

9节
元素的each和其他过滤器

//elements.each(function(k,v){...}); //each函数遍历元素并获取元素值
$(‘#dv input[type=checkbox]‘).click(function(){
var cks=$(‘#dv :checked‘); //获得层内被选中的元素
var len=cks.length; //记录个数
var arr=[]; //用于存储获得的元素值
cks.each(function(k,v){ //通过each()函数遍历选中的元素-----------------------------------------(*)
arr[arr.length]=$(v).val();//记录选中的元素的value值
});
$(‘#p1‘).text(‘共选择了‘+len+‘个,分别是:‘+arr);
});

<div id="dv">
<input type="checkbox"/>
<p id="p1"><p>
</div>

//表单选择器
$(‘:input‘)选取所有<input> <textarea> <select> <button>元素
$(‘input‘)只获取<input>元素
$(‘:text‘)选取所有单行文本框,等价于 $(‘input[type=text]‘)
$(‘:password‘)选取所有密码框 :radio :checkbox :submit :image :reset :button :file :hidden //这些代替了$(‘input[type=...]‘);

//其他过滤器
:hidden //选取所有不可见元素(如果直接写:hidden则会包含head\title\script\style...)
表单元素type="hidden" (表示的是隐藏域)
设置css的display:none
高度和宽度明确设置为0的元素
父元素时隐藏的,所以子元素也是隐藏的
visibility:hidden与opacity为0不算,因为还占位所以不认为是-----???----
hidden:visible选取所有可见元素

//内容过滤器
:contains(text) 过滤出包含指定文本的元素(innerText中包含)
:empty 过滤出所有不包含子元素或文本的空元素
:has(selector) 过滤出元素中指定子元素得元素
:parent 过滤出可以当做父元素的元素(即该元素有子元素或元素中包含文本)
$(‘div:contains(好)‘).css(,) 获取层中包好‘好’的元素
$(‘div:empty‘).css(,) 获取为空元素的层
$(‘div:has(a)‘).css(,) 获取包含子元素的层
<div><a href="">百度</a></div>
<div></div>
<div>好帅啊</div>
<div></div>

//子元素过滤器
:first 只能选取第一个
:first-child 选取每个子元素的第一个元素
$(‘ul :first-child‘)
$(‘ul li:first‘) 只返回一个li元素
$(‘ul li:first-child‘) 为每个父元素(ul)都返回一个li
:last-child
:only-child 匹配当前元素只有一个子元素的元素
:nth-child 为每个父元素都要匹配一个子元素,eq()只匹配一个
:nth-child(index) index从1开始
:nth-child(even)
:nth-child(odd)
:nth-child(3n) 选取3的倍数的元素
:nth-child(3n+1) 满足3的倍数+1的元素
.children()方法 只考虑子元素,不考虑后代元素

10节
动态创建元素

html() innerHTML
text() innerText
attr() 读取或设置元素的属性

$(‘#chk‘).attr(‘checked‘,true).attr(‘class‘,‘cls‘); //属性有,值没有; google中checkbox CSS表现不出来,ie可以
$(‘#chk‘).attr(‘class‘,‘‘);
$(‘#chk‘).removeAttr(‘class‘); //属性也没有了

<input type="button"/>
<input type="checkbox" id="chk"/>

//创建一个层
var dvObj = $(‘<div id="dv"></div>‘).appendTo($(‘body‘)); //创建一个层,并添加到Body中 $(‘body‘).append(dvObj);也可以
//dvObj.css(,).css(,).css(,); //google中是看不到的,查看的话,在ie中装DebugBar--重建document树-------------DebugBar----------------
dvObj.css({"width":"300px","":"","":""}); //用键值对添加样式

11节
动态创建元素的两个案例

//动态创建一个表格
var dict={"百度":"http://www",...};
//无刷新评论
$(‘<tr><td>‘+$(‘#txt‘).val()+‘</td><td>‘+评论的内容+‘</td></tr>‘).appendTo($(‘#tab‘));

12节
移除元素和练习

appendTO() //主动巴结到最后一个 append()是追加
prependTo() //主动巴结到第一个
A.insertBefore(B) //将A加到B得前面,等同于 B.before(A)
X.insertAfter(Y) //将X加到Y的后面,等同于 Y.after(X)

//1 删除元素
$(‘div‘).empty(); //清空层中元素
$(‘div‘).remove(); //层没了,自杀 ,删除这个层之后,还可以调用这个层对新
$(‘div‘).remove(‘.cls‘) //层没了,移除应用了cls样式的层,有目的性的杀掉

//2 权限选择
$(‘#se1 option:selected‘).appendTo($(‘#se2‘)); //单个选择添加到sel2
$(‘#se1 option‘).appendTo($(‘#se2‘)); //全部添加到sel2
//如果报错"例外被抛出"等,很可能是选择器表达式有问题,比如单词拼写错误,加了不必要的空格等。vla()是方法不是数学.

<div>
<select id="se1"></select>
<div>
<input type="btton" value=">"/>
<input type="btton" value="<"/>
<input type="btton" value=">>"/>
<input type="btton" value="<<"/>
</div>
<select id="se2"></select>
</div>

//3 加法计算器
var ret = parseInt($(‘#txt1‘).val())+parseInt($(‘#txt2‘).val());
$(‘#txt3‘).val(ret);

//4 10秒后协议文本注册
//5 创建若干文本框,当失去焦点时,如果文本框为空,则将文本框背景设置为红色,如果不为空则为白色。
if($(this).val().length==0){...}
//6 选择球队,2个ul。被悬浮(鼠标移到)行高亮显示(背景是红色),点击球队将它放到另一个的球队列表
.unbind() //清除所有事件
.unbind(‘click‘) //清除点击事件

$(‘#uu1 li‘).mouseover(function(){
$(this).css(,).siblings().css(,);
}).click(function(){
//$(this).appendTo(‘#uu2‘); //把元素的样式和事件都进来了
$(this).removeAttr(‘style‘).unbind().appendTo(‘#uu2‘); //清除样式和事件
});

<ul id="uu1"><li></li></ul><hr/>
<ul id="uu1"></ul>

13节
节点替换和包裹节点

//替换节点
$(‘br‘).replaceWith(‘<hr/>‘); //用hr标签替换br标签
$(‘<br/>‘).replaceAll(‘hr‘); //br标签替换所有hr
//包裹节点
$(‘div p‘).wrap(‘<font></font>‘); //包裹每个p标签
$(‘div p‘).wrapAll(‘<font></font>‘); //包裹所有p标签
$(‘div p‘).wrapInner(‘<font></font>‘); //包裹在p标签里面

14节
案例和练习

attr(‘class‘) 获取样式
attr(‘class‘,‘cls‘) 设置样式
addClass(‘cls‘) 追加样式
removeClass(‘cls‘) 删除样式
toggleClass(‘cls‘) 切换样式(如果存在样式,就去掉样式,如果没有样式,则添加样式)
hasClass(‘cls‘) 判断是否存在样式

//1
$(‘body *‘).mouseover(function(){ //body的所有元素
$(this).addClass(‘cls‘);
}).mouseout(function(){
$(this).removeClass(‘cls‘);
});

//2 搜索文本框
if($(this).val()==‘请输入值‘){ //清空值 //移除样式}
//3 RadioButton操作(点击按钮使单选框被选中)
$(‘:radio[value=1]‘).attr(‘checked‘,true);
$(‘:radio‘).val(["1","2","3"]); //如果name值不同的话,就可以都被选中

15节
复选框案例

//全选 全不选 反选
$(‘div :checkbox‘).attr(‘checkbox‘,true);
$(‘div :checkbox‘).attr(‘checkbox‘,false);
$(‘div :chexkbox‘).each(function(){ //遍历每一个复选框
$(this).attr(‘checked‘,!$(this).attr(‘checked‘));
});

16节
微博案例上

//1 按钮高亮显示
$(this).css(backgroundPosition,‘0 -195px‘)
$(this).css(backgroundPosition,‘-117px- -165px‘)
//2 计算文本框还能输入多少字
$(‘#msgTxt‘).change(function(){
var len = 140 - $(this).val().length;
});
Math.abs(len) //取绝对值
//计时器

17节
微博案例中

//3 显示话题
<a href="javascript:void(0);" >话题</a>
$(‘#msgTxt‘).val(‘#输入话题标题#‘).selectRange(1,7); //扩展方法,使标题高亮显示(被选择)
//4 显示朋友
//如果层存在,就关闭 if(‘#dvF‘).length>0){$(‘#dvF‘).remove(); }
var dvX=$(this).offset().left+‘px‘; //层距离左侧的像素
var dvX=$(this).offset().top+$(this).height()+‘px‘;
dvFriends.css({"left":dvX,"top":dvY});
//添加一个关闭
float:right;浮动到右侧
$(this).parent().remove();
//显示朋友列表
clear:both; //清除浮动
style="list-style-type:none;margin:0;padding:0;clear:both;"

18节
微博案例下

//5 显示表情
//创建层(脱离文档流,设置左顶距离)(前面如果有层,就删除)
//显示表情和关闭
var dict={‘1.gif‘:‘微笑‘,...};
//再创建一个层放表情(clear:both;清除浮动)
//遍历键值对
//创建图片
//鼠标进入事件 点击事件
//如果msgTxt的值"是不是输入话题"
$(‘#msgTxt‘).val( ‘[‘+$(this).attr(‘title‘)+‘]‘ );

16-18节
微博案例

$(function(){
//1 广播按钮高亮显示
$(‘#dvFigure .clsBroadcast‘).mouseover(function(){
$(this).css(‘backgroundPosition‘,‘0 -195px‘).css(‘backgroundColor‘,‘red‘);
}).mouseout(function(){
$(this).css(‘backgroundPosition‘,‘-117px -165px‘).css(‘backgroundColor‘,‘blue‘);
});
//2 显示剩余字数
$(‘#dvContent .clsTxt‘).change(function(){
var surplus = 140 - $(this).val().length;
if(surplus>=0){
$(‘#dvFigure .clsSurplus‘).html(‘还能输入<em>‘+surplus+‘</em>个字‘);
}else{
$(‘#dvFigure .clsSurplus‘).html(‘超出<font color="red"><em>‘+Math.abs(surplus)+‘</em></font>个字‘);
}
clearInterval(setId); //为了避免一直计时,在这里先禁掉------???---------
});
var setId = setInterval(function(){
$(‘#dvContent .clsTxt‘).change();
},500);
//3 显示话题
$(‘#dvLink #topic‘).click(function(){
$(‘#dvContent .clsTxt‘).val(‘#请输入话题标题#‘); //.selectRange(1,7) 获得高亮显示
});
//4 显示朋友
$(‘#dvLink #friend‘).mouseover(function(){
var arrFri=[‘东邪‘,‘西毒‘,‘南帝‘,‘北丐‘,‘鞠婧祎‘,‘朴智妍‘];
if($(‘#dvFriend‘).length>0){
$(this).remove();
}
var dvF=$(‘<div id="dvFriend" style="width:100px;border:1px solid blue;position:absolute;"></div>‘).appendTo($(‘body‘));
var dvFX=$(this).offset().left+‘px‘;
var svFY=$(this).offset().top+$(this).height()+‘px‘;
dvF.css({"left":dvFX,"top":svFY});
//创建一个关闭按钮
$(‘<input type="button" style="float:right;" value="关闭" />‘).mouseover(function(){
$(this).css(‘backgroundColor‘,‘blue‘);
}).mouseout(function(){
$(this).css(‘backgroundColor‘,‘‘);
}).click(function(){
$(this).parent().remove(); //----为什么点2次才移除-----???-------------
}).appendTo(dvF);
//创建列表
var ulObj=$(‘<ul style="list-style-type:none;clear:both;margin:0;padding:0;"></ul>‘).appendTo(dvF);
for(var i=0;i<arrFri.length;i++){
$(‘<li>@‘+arrFri[i]+‘</li>‘).mouseover(function(){
$(this).css(‘backgroundColor‘,‘red‘);
}).mouseout(function(){
$(this).css(‘backgroundColor‘,‘‘);
}).click(function(){
if($(‘#dvContent .clsTxt‘).val()==‘#请输入话题标题#‘){
$(‘#dvContent .clsTxt‘).val($(this).text());
}else{
$(‘#dvContent .clsTxt‘).val($(‘#dvContent .clsTxt‘).val()+$(this).text());
}
}).appendTo(ulObj);
}
});
//5 显示表情
$(‘#dvLink #face‘).mouseover(function(){
var dict={"00.gif":"00","01.gif":"01","02.gif":"02","03.gif":"03","04.gif":"04","05.gif":"05","06.gif":"06","07.gif":"07","08.gif":"08","09.gif":"09","10.gif":"10","11.gif":"11","12.gif":"12","13.gif":"13","14.gif":"14","15.gif":"15","16.gif":"16","17.gif":"17","18.gif":"18","19.gif":"19","20.gif":"20","21.gif":"21","22.gif":"22","23.gif":"23","24.gif":"24","25.gif":"25","26.gif":"26","27.gif":"27","28.gif":"28","29.gif":"29"};
//创建层
if($(‘#dvFace‘)){
$(‘#dvFace‘).remove();
}
$(‘<div id="dvFace" style="width:400px;border:1px solid blue;position:absolute;"></div>‘).appendTo($(‘body‘));
var dvFaceX=$(this).offset().left-80+‘px‘;
var dvFaceY=$(this).offset().top+$(this).height()+‘px‘;
$(‘#dvFace‘).css({"left":dvFaceX,"top":dvFaceY});
//层中创个标题和关闭按钮
$(‘<span style="float:left;">表情</span>‘).appendTo(‘#dvFace‘);
$(‘<span><input type="button" style="float:right;" value="关闭"/></span>‘).mouseover(function(){
$(this).css(‘backgroundColor‘,‘blue‘); //---背景为什么未变色----???-----------
}).mouseout(function(){
$(this).css(‘backgroundColor‘,‘‘);
}).click(function(){
$(this).parent().remove();
}).appendTo(‘#dvFace‘);
//再创一个层,放入dvFace层
$(‘<div id="dvFaceImg" style="clear:both;"><div>‘).appendTo(‘#dvFace‘);
//编译添加表情
for(var key in dict){
$(‘<img src="faceImg\\‘+key+‘" title="‘+dict[key]+‘" />‘).mouseover(function(){
$(this).css({‘borderColor‘:‘red‘,‘cursor‘:‘pointer‘});
}).mouseout(function(){
$(this).css({‘borderColor‘:‘‘,‘cursor‘:‘‘});
}).click(function(){
if($(‘#dvContent .clsTxt‘).val()==‘#请输入话题标题#‘){
$(‘#dvContent .clsTxt‘).val(‘[‘+$(this).attr(‘title‘)+‘]‘);
}else{
$(‘#dvContent .clsTxt‘).val( $(‘#dvContent .clsTxt‘).val()+‘[‘+$(this).attr(‘title‘)+‘]‘ );
}
}).appendTo($(‘#dvFaceImg‘));
}
});
});

<div id="dvOut">
<div id="dvContent">
<textarea class="clsTxt" cols="50" rows="5"></textarea>
<div id="dvLink">
<a href="javascript:void(0)" id="topic">话题</a>
<a href="javascript:void(0)" id="friend">朋友</a>
<a href="javascript:void(0)" id="face">表情</a>
<a href="javascript:void(0)" id="picture">照片</a>
<a href="javascript:void(0)" id="video">视频</a>
</div>
</div>
<div id="dvFigure">
<span class="clsSurplus">还能输入<em>140</em>个字</span>
<span><input type="button" class="clsBroadcast" name="name" value="广播" /></span>
</div>
</div>

19节
jquery中的几个绑定事件的方法

//1 绑定事件
$(‘#btn‘).bind(‘click‘,function(){
alert(‘点击了‘);
});
//2 合成事件
hover(enterfn,leavefn)
$(‘#btn‘).hover(function(){...},function(){...});
//3 切换事件
$(‘#btn‘).toggle(function(){},function(){},function(){},...);
//4 事件冒泡:同样的事件时,触发里面,也会触发外面
alert($(this).attr(‘id‘));
e.stopPropagation(); //取消事件冒泡,需要传e参数
//5 阻止事件
e.preventDefault();
//6 jqery在注册事件时如何传参数(单个参数,数组,键值对都行)
$(‘#btn‘).click({"name":"熊爱明"},function(e){
alert( e.data.name );
});

<div>
<p>
<span></span>
</p>
</div>

20节
jquery中的其他事件

pageX PageY //获得当前鼠标的x y
//让图片飞起来
$(document).mousemove(function(e){
$(‘#img‘).css(‘position‘,‘absolute‘).css({‘left‘:e.pageX,‘top‘:e.pageY});
});

$(‘div‘).mousedown(function(e){
alert(e.which);//获得键值
});

unbind() //移除元素上的所有绑定事件
$(this).offset() //当前元素相对于页面的坐标
$(this).offset().left $(this).offset().top

$(‘#btn‘).one(‘click‘,function(){ //只执行了1次
alert(‘也许这是一个不错的选择‘);
});

event.originalEvent //获得原始的event对象

21节
动画效果

Tooltips(作业 几乎全是css实现的 鼠标进入时创建一个层,并把这个层slide)

//1 显示和隐藏元素
show() hide()
$(‘div‘).show(); 显示层
$(‘div‘).show(1000); 在1秒内显示

//2 上下显示或隐藏
//在右下角弹出qq消息的效果(作业)
slideDown(1000) 从上到下显示
slideUp(1000) 从下到上隐藏
slideToggle(1000) 上下滑动

//3 淡入淡出
fadeIn(1000);
fadeOut(1000);
fadeToggle(1000);

//4 自定义动画
animate({css},speed);

$(‘img‘).animate({"left":"50px","top":"500px"},1000).animate({"left","+500px","top":"-400px","width":"30px","height":"30px"},2000);

<input type="button"/>
<img/>

22节
cookie

cookie:保存在浏览器的内容,下次再次访问就可以取出上次保存的内容,
cookie需要浏览器支持,禁用掉就没有了,与域名有关,不会冲突,cookie内容超出,会自动删除;有期限7天;可进行加密;进行作弊

//引入jquery.cookie.js

//判断cookie中是否有保存
if($.cookie(‘uName‘)){
$(‘span‘).text(‘欢饮‘+$.cookie(‘uName‘)+‘登陆‘);
}else{
$(‘span‘).text(‘欢饮菜鸟登陆‘);
}
//如果没保存,把值存入cookie的uName中
$.cookie(‘uName‘,$(‘#txt‘).val()); //------------没存入----???--------------

23节
jquery插件

//通过jqzoom插件是图片放大(高清无码)
http://www.mind-projects.it/projects/jqzoom/ --download--下载--
//所有插件列表 http://plugins.jQuery.com/

网页的分析工具
DebugBar -> IE
Firebug -> FireFox
Collection -> Googgle

yy

Regex在匹配网址时,regularException必须有‘^‘和‘$‘
考虑正则表达式本身时不要考虑转义,当翻译为C#代码时,再考虑转义
\. 表示 . //相当于 [.]也表示一个.
\( 表示 (
正则表达式博大精深:知道正则表达式可以做字符串的匹配,字符串的提取,字符串的替换;知道常用的简单的正则表达式的写法;能够看懂常见的正则表达式
在正则表达式中,\w 表示[0-9a-zA-Z_] ;但是在中文操作系统,C#应用环境中也是可以匹配汉字的
<<J2EE全程开发实例>>

yy

//拼接sql语句
//需要获得类名和列名
Type type=obj.GetType();//获取对象类型
string className=type.Name;//获得类名,就是表名
PropertyInfo[] proInfos=type.GetProperties();
string[] proNames=new string[proInfos.length-1];//排除id
//遍历属性,获得除了id的数组
//用‘,‘拼接成字符串,加入到sql语句中

//根据id查询
//泛型 T
return default(T) //用来获得类型的默认值

写DeleteById()方法
写Update()方法
http://www.rupeng.com/forum/thread-44526-1-1.html (上交作业)

//委托事件

//sender 触发事件的控件对象

时间: 2024-10-02 13:54:45

Web静态开发 JQuery的相关文章

10个极客Web前端开发jquery资源大荟萃

1.基于TweenMax.js的网页幻灯片 今天给大家带来一款基于TweenMax.js的网页幻灯片.这款幻灯片以不规则的碎片百叶窗的形式切换.切换效果非常漂亮. 在线演示 源码下载 2.pagePiling.js - 创建漂亮的全屏滚动效果 全屏滚动效果是最近非常流行的网页设计形式,带给用户良好的视觉和交互体验.pagePiling.js 这款 jQuery 插件可以帮助前端开发人员轻松实现这种效果. 在线演示 源码下载 3.使用 CSS3 伪元素实现立体的照片堆叠效 CSS3 里引入的伪元素

Web前端开发——JQuery基础梳理

JQuery是由美国人John Resig于2006年创建的一个开源项目,随着人们的熟知,越来越多的程序高手加入其中, 完善和壮大其项目内容:如今已发展成为JavaScript.CSS.DOM.AJAX于一体的强大框架体系.jQuery是一个兼容多 浏览器的javascript库,核心理念是write less,do more(写的更少,做的更多). 下面先用一张图总体概括一下. 下面对JQuery一些基础知识介绍一下. 1.$ 在JQuery中使用最多的莫过于"$"了,无论是页面元素

JQuery WEB前段开发

JQuery WEB前段开发 Jquery是继prototype之后又一个优秀的Javascript框架.它是轻量级的js库 ,它兼容CSS3,还兼容各种浏览器(IE 6.0+, FF 1.5+, Safari 2.0+, Opera 9.0+),jQuery2.0及后续版本将不再支持IE6/7/8浏览器.jQuery使用户能更方便地处理HTML documents.events.实现动画效果,并且方便地为网站提供AJAX交互.jQuery还有一个比较大的优势是,它的文档说明很全,而且各种应用也

SpringBoot 基于web应用开发(请求参数获取,静态资源,webjars)

SpringBoot 基于web应用开发 一.Lombok使用 1.导入依赖库 <dependency>    <groupId>org.projectlombok</groupId>    <artifactId>lombok</artifactId>    <version>1.18.6</version></dependency> 2.安装插件 3.在实体bean使用 @Data    相当于set,ge

Web前端开发必备:《Jquery实战》第3版 介绍

目标读者 本书适合想深入学习jQuery的Web开发人员.全栈工程师.架构师.jQuery是互联网上最流行的JavaScript框架.本书的目标是希望读者成为Web高级开发人员,无论起点如何.本书深入介绍了整个jQuery框架,此外还专门深入介绍了插件编程,以及一些扩展开发工具和框架,比如Bower和QUnit,当然还有经典的开发实战原则.每个API方法都使用了简明扼要的语法块来描述参数和返回值. <jQuery实战>(第三版)涵盖了从简单入门(如何在网页中引入jQuery)到高级开发的内容,

web app开发——使用jQuery Mobile创建餐厅订餐应用

从零开始创建移动Web应用需要编程者学习专门的移动编程知识技能,还要有比如专门的编码工具(比如专门为iOS系统开发应用的工具),再有就是需要在每一个平台都进行测试部署(如Andr??oid,iOS,BlackBerry,Windows Mobile等). 这样的话,开发移动应用将花费不少,而另一个解决方案是再使用HTML,CSS,Javascript,它们的特点是跨平台和跨设备.此外,目前已 经出现了不少专为移动web应用开发的专门框架,比如jQuery Mobile.jQuery Mobile

《JavaScript &amp;amp; jQuery交互式Web前端开发》之JavaScript基础指令

       在本节中.你将開始学习阅读和编写JavaScript代码,还将学习怎样编写Web浏览器可以遵照运行的指令.在開始学习后面章节中的更复杂的概念之前.我们先学习语言的一些核心部分,然后看看怎样使用它们来编写一些很基础的(仅包括少量简单步骤)脚本程序.     在開始学习后面章节中的更复杂的概念之前,我们先学习语言的一些核心部分,然后看看怎样使用它们来编写一些很基础的(仅包括少量简单步骤)脚本程序. 语言: 语法结构 不论什么新的语言都一样,都要学习它们的新词汇(词汇表),以及将这些词汇

JavaScript &amp; jQuery交互式Web前端开发

这篇是计算机中网络编程javascript类的优质预售推荐<JavaScript & jQuery交互式Web前端开发>. 内容简介 欢迎选择一种更高效的学习JavaScript和jQuery的方式. 你是一名JavaScript新手?或是您曾经向自己的Web页面上添加过一些脚本,但想以一种更好的方式来实现它们?本书非常适合您.本书不仅向您展示如何阅读和编写JavaScript代码,同时还会以一种简单且视觉化的方式,教您有关计算机编程的基础知识.阅读本书之前,您只需要对HTML和CSS

web前端开发规范

本文原创,这里首先声明,转载注明本文出处,翻版必究! web前端开发规范的现实意义 1.提高团队的协作能力 2.提高代码的重复利用率 3.可以写出质量更高,效率更好的代码 4.为后期维护提供更好的支持 5.可读性高 一.命名规则 1.html命名规则: a.文件名称命名规则:统一使用小写英文字母.数字.下划线的组合,不得包含汉字空格和特殊字符 2.命名原则:方便理解.方便查找 b.索引文件命名原则:index.html.index.htm.index.asp.index.aspx.index.j