jquery的方式完成省市二级联动,真的是比javascript简单多了
JS中数组遍历操作是类似Java的for循环,而jquery中有自己独特的方式,下面介绍两种方法来完成数组的遍历操作。
方式一官方举例
在这个例子中$("img")的意思是获取所有的img标签对象,然后.each表示遍历这些对象,遍历这些对象的操作是this.src="test"+i+".jpg",this指代的是当前对象img,方式一总结为$("..").each(function(i){对对象的操作})
以前使用jquery的方式完成过复选框的全选和全不选,他的代码为$("#select")。Click(function(){$("body input").attr(checked,true)});
这个的代码的意思就是获取所有的body input(代码中只有checkbox类型的input),然后把这写对象的属性全部设置好,其实现在知道了遍历的方式之后,我们也可以通过遍历的方法来遍历所有的checkbox对象,然后为其设置属性值
这个代码也可以完成全选和全不选,二者的不同之处在于,这个应用了遍历,要说明一下这个this的使用,第一个this表示#checkAll,第二个this表示tbody input,在jquery中可以通过this.属性=属性值的方式获取属性,但不可以通过$("..").属性=值的方式来操作设置属性值,应该通过attr的方式来操作对象的属性值。
方式二:官方举例
方式二的大体格式为$.each(数组或对象,function(i,n){
操作
});
这里的i表示角标,这里的n表示值
在js中追加要通过appendChild的方式,而在jquery中有两种常用的方式:
对象a.append("b")将b添加到a下,则原来的b在原位置要消失
对象a.appendTo("b")将a添加到b下
这两个要有区别的看待,效果二者是一样的
content可以是文本,或者也可以包含html的标签,或者对象,比如$(opEle).appendTo($("#city"))
这段代码中p添加到div中,可以看出结果,因为有两个div,所以每个div中添加了p标签
这个追加是内部追加,就是追加到对象下,而且是内部的尾部
还有一个追加也是内部追加是prepend,这个是从内部的头部追加
除了内部插入还有外部插入,比如插入到对象的下一个,或者上一个
以上方法除了可以能将元素插入到文档中,还能对原有的元素进行移动
在js中清除下拉表框中是通过
Var selEle=document.getElementById("sel2");
selEle.options.length=0;
获取下拉表框的对象,然后通过设置长度为0 的方式来完成清楚下拉表框的方式
在jquery的方式中,可以通过empty的方式来完成清楚下拉表框中内容的操作
通过这个例子可以看出$("p").empty(),这句代码的意思将p标签下的所有东西全部清空,最后就只剩下<p></p>这个标签了,所以通过这种方式,我们也可以完成清楚下拉表框的操作,对象.empty是清除对象下的所有东西,这个对象会留下,而还有一个方法是对象.remove(),这个方式是删除对象,连对象都会被删掉。
从上面这个代码看出,p及p之下的全部删掉了,只剩血了和p无关的how are
通过jquery的方式来实现二级联动
$(function(){
var cities=new Array(3);//定义数组的方式,3表示长度为3,但当数组长度不够用时,长度可扩展,
cities[0]=new Array("保定市","邢台市","石家庄");//所以数组的最大长度为最大角标加1
cities[1]=new Array("郑州市","洛阳市","开封市");
cities[2]=new Array("长沙市","郴州市","株洲市");
cities[3]=new Array("郑州市","洛阳市","开封市");
$("#province").change(function(){
$("#sel2").empty();
var v=this.value;
$.each(cities,function(i,n){
if(i==v){
$.each(cities[i], function(m,v) {
var textEle=document.createTextNode(v);
var optionEle=document.createElement("option");
$(optionEle).append(textEle);
$(optionEle).appendTo($("#sel2"));
});
}
});
});
});
对这个程序进行一下说明,this.value可以直接获取到当前对象的值(这个是dom形式,在jquery中也可以使用dom形式,jquery中的获取value值的方式不可以直接点。应该通过val的方式来获取value值),也就是select选中的那个值,这个this指代的是最上面靠近this的$(..)事件对象或循环对象,也就是说必须var v=this.value的方式开获取值,此时获取的值就是select选中的值,但是不可以写成if(i==this.value)因为要是这样写的话,这个this指代的不是选中的那个值了,因为this写在了$.each中,在jquery中创建对象还是先用dom的形式documnet,然后在$(dom对象),这样这个dom对象就是jquery对象了,就可以调用jquery的方法了,其实还可以通过jquery的方式,比如:
var $newNode = $("<option value=‘长沙’>大专</option>");这就相当于创建了长沙option对象了,很方便不用一级一级添加了
jquery属性操作value,text,html,获取和设置
对象.html()获取对象的内部包括标签
对象.html(..)会覆盖对象的内部
对象.text()获取对象的内部内容,不包含标签
对象.text()这个是jquery中的操作方式,而js中的操作方式是this.firstchild.nodeValue
对象选择器返回一个对象数组,调用text(),html(),click()之类的方法其实是对数组中的每个元素迭代调用方法
克隆
克隆就是复制的意思,通过对象.clone()的方式可以复制一个一摸一样的对象,但要注意一点的是这个对象没有源对象的事件机制,比如源对象有click事件,那么复制的这个没有这个事件,要想让复制的这个也有这个事件,需要使用对象.clone(true),写上一个参数true那么就复制有这个参数了
替换replace
p对象.repalceWith("<strong>南京</strong>");这个代码的意思就是将对象的内部替换为()中的内容,就好比删除内部,再添加一个意思
上面这句话代码还可以$("<strong>南京</strong>").replaceAll("p");