第一章:认识JQuery
第一阶段:jQuery的基本操作
简介JQuery的由来,以及相类似的其他JavaScript框架(5分钟)
讲解需要的JavaScript包版本以及导入(2分钟)
讲解JQuery和原生态JavaScript代码的比较,同时讲解$()和val(),size(),html()的用法(10分钟)
讲解JQuery的选择器类型(id,.class,element)强调和CSS样式中的选择器相同
讲解JQuery对象和JavaScript对象的区别,一定要讲明白JQuery就是JavaScript的数组包装,讲解两者的转换方法
数组下标[index]和get(index)方法。
讲解each()方法的使用
第二阶段:操纵Form表单数据:本章通过向Form表单添加JSON数据和从Form表单中获取JSON数据来展示JQuery的选择器作用和属性操作。
案例一:将JSON数据放入到form元素中
var data={username:"kkk",pass:"123456",sex:["nv"],userid:"456789",hobby:["xiaochi","guangjie"],addr:"luoyang",intro:"java高级讲师"};
$(function(){
$("#btn").click(function(){
addFormData("myform",data);
});
});
function addFormData(formId,data){//参数formId是form表单的id,data是要传入的JSON数据
var nameArr=[];//用来装载form表单中所有元素名称的数组
$("#"+formId+" :input[name]").each(function(){//选择form表单中所有包含有name属性的元素
nameArr.push(this.name);//将所有元素的名称加入到nameArr数组中
});
for(var i=0;i<nameArr.length;i++){
$("#"+formId+" :input[name='"+nameArr[i]+"']").val(data[nameArr[i]]);
//循环名称数组的每一个名称,并将form表单中和当前循环的元素名称相同的元素的值设置成data数据中对应名称属性的值
}
}
案例二:将form表单中的数据转化成JSON对象
function getFormData(formId){
var data=new Object();//创建JS对象
$("#"+formId+" :input[name]").each(function(){//遍历form下带name属性的元素
if(this.value!=null){
if(this.type=="checkbox"||this.type=="radio"){//如果是单选或多选元素
if($(this).prop("checked")){//如果是被选中的元素,讲解this的本质
data[this.name]=this.value;//将被选中元素的值赋给数据对象的相应属性
}
}else{
data[this.name]=this.value;
}
}
});
return data;
}
$(function(){
$("#btn").click(function(){//函数调用
var data=getFormData("myform");
alert(JSON.stringify(data));//将对象转换成JSON字符串
});
});
第二章:事件、属性、创建、添加、删除元素、样式操作、属性操作
第一阶段:主要讲解事件绑定、创建、添加、删除元素,样式操作等知识点
案例一:EditTable,可编辑表格,通过案例来让学生掌握选择器、操作样式、创建并添加元素、事件绑定、文本操作。
<table border="1" id="tab">
<tr>
<td>商品编号</td><td>商品名称</td><td>商品价格</td><td>商品数量</td>
</tr>
<tbody id="tb">
<tr>
<td>S001</td><td>冰箱</td><td>4000</td><td>25</td>
</tr>
<tr>
<td>S002</td><td>洗衣机</td><td>5500</td><td>21</td>
</tr>
<tr>
<td>S003</td><td>电视机</td><td>7800</td><td>12</td>
</tr>
</tbody>
</table>
$(function(){
editTable("tb");
});
function editTable(tbodyId){
$("#"+tbodyId+" td").on("click",function(){
var td=$(this);
var content=td.text();//获取元素的文本
var input=$("<input value='"+content+"'>");//创建元素
td.html("").css({"padding":0});//定义单个样式,
input.css({"padding":"0px","margin":"0px","text-align":'center',"border-width":0});
//定义多个样式,使用的是JSON对象格式,
input.width(td.width()).height(td.height());//设置输入框的宽度和表格一样,以上3句代码要等到第二步完善细节的时候再添加。
td.append(input);//添加子元素
input.trigger(“focus”).trigger(“select”);//让文本框获得焦点并选中,防止出现连续点击不同的单元格时,不能触发失去焦点事件。这句话也可以最后加
input.click(function(){return false;});//阻断在文本框中的事件传递
input.on("blur",function(){
var update=input.val();//获取文本框中的value
input.remove();//移除文本框
td.text(update);//将文本框中的值放入到单元格中
});
});
}
讲解过程中先不讲解关于样式的内容
总结本示例学过的知识点:$()选择器、on()事件绑定、$(“元素”)创建元素、css()改变样式、width()操作宽度、append()添加子元素、remove()删除本元素、text()。
第二阶段:将JSON数组数据加入到表格中
案例二:
<input type="button" value="加载数据" id="btn">
<table id="tab" border="1">
<tbody id="tb"></tbody>
</table>
function addTable(tid,data,titleArr){//tid:tbody的id;data:显示的数据对象数组;titleArr:数据对象属性(按出现的先后顺序排列)
for(var i=0;i<data.length;i++){
var tr="<tr>";
for(var j=0;j<titleArr.length;j++){
tr+="<td>"+data[i][titleArr[j]]+"</td>";//数据数组中第i个数据对象中的某个属性([titleArr[j]:属性数组中第j个值])的值
}
tr+="</tr>";
$("#"+tid).append($(tr));
}
}
$(function(){
var data=[{cid:1,cname:'郑州',cpCount:2000},{cid:2,cname:'洛阳',cpCount:1000},{cid:3,cname:'开封',cpCount:100},{cid:4,cname:'新乡',cpCount:200}];
$("#btn").on("click",function(){
addTable("tb",data,["cid","cname","cpCount"]);
});
})
function addSelect(sid,data,val,txt){
for(var i=0;i<data.length;i++){
$("#"+sid).append($("<option value='"+data[i][val]+"'>"
+data[i][txt]+"</option>"));
}
}
$(function(){
var data=[{cid:1,cname:'郑州'},{cid:2,cname:'洛阳'},{cid:3,cname:'开封'},{cid:4,cname:'新乡'}];
addSelect("sele",data,"cid","cname");
})
第三章:
第一阶段:
案例:获取表格中指定列的数据
<input type="button" value="显示数据" id="btn">
<table border="1" id="tab">
<tr>
<td>商品编号</td><td>商品名称</td><td>商品图片</td><td>商品价格</td><td>商品数量</td>
</tr>
<tbody id="tb">
<tr>
<td>S0001</td><td>无线鼠标</td><td>img.jpg</td><td>85.6</td><td>5</td>
</tr>
<tr>
<td>S0002</td><td>无线键盘</td><td>jianpan.jpg</td><td>100</td><td>2</td>
</tr>
<tr>
<td>S0102</td><td>外接音箱</td><td>yinxiang.jpg</td><td>150</td><td>6</td>
</tr>
</tbody>
</table>
function getData(tbodyid,names,positions){//names:传输数据的参数名,position:表格中需要传输的数据在每行中的位置(位置从0开始计算)
var data=[];//装载数据的数组
var col=0;//遍历每一列的列标
$("#"+tbodyid+" tr").each(function(){//获得所有的tbody中的行
col=0;//将新一行的列数置为零
var obj=new Object();//每一行数据装入到一个对象中
$(this).children().each(function(){//遍历行中所有的列
for(var i=0;i<positions.length;i++){
if(positions[i]==col){//如果数据列的位置和当前列标相同
obj[names[i]]=$(this).text();//将数据对象的相应属性设置成
break;
}
}
col++;
});
data.push(obj);//将装载完毕的数据对象放入到数组中
});
return data;
}
$(function(){
var names=["sid","sprice","scount"];//指定JSON数据的属性
var positions=[0,3,4];//指定要获取表格数据所处的列索引(从0开始)
$("#btn").on("click",function(){
var da=getData("tb",names,positions);
for(var i=0;i<da.length;i++){
alert(da[i].sid+":"+da[i].sprice+":"+da[i].scount);
}
});
});