*引用jquery
- <script type="text/javascript" src="http://www.css88.com/tool/css3Preview/jquery-1.4.2.min.js"></script>
*live事件实际就是加载事件
- $("button").live("click",function(){
- $("p").slideToggle(); //slideToggle()是像拉窗帘一样的事件
- });
*
- var parent = window.parent.document;
- var form = $('#' + id + ' form', parent);//这里的后面一个参数指的是在这个对象中查找这个元素
*$.isFunction(obj)
- function stub() {
- }
- var objs = [
- function () {},{ x:15, y:20 },
- null,
- stub,
- "function"
- ];
- jQuery.each(objs, function (i) {
- var isFunc = jQuery.isFunction(objs[i]);
- $("span:eq( " + i + ")").text(isFunc);
- });
*$.extend()
- 1.Jquery的扩展方法原型是:
- extend(dest,src1,src2,src3...);
- 它的含义是将src1,src2,src3...合并到dest中,返回值为合并后的dest,
- var newSrc=$.extend({},src1,src2,src3...)//也就是将"{}"作为dest参数。
- 这样就可以将src1,src2,src3...进行合并,然后将合并结果返回给newSrc了。如下例:
- var result=$.extend({},{name:"Tom",age:21},{name:"Jerry",sex:"Boy"})
- 那么合并后的结果
- result={name:"Jerry",age:21,sex:"Boy"}//也就是说后面的参数如果和前面的参数存在相同的名称,那么后面的会覆盖前面的参数值。
- 2.省略dest参数
- 上述的extend方法原型中的dest参数是可以省略的,如果省略了,则该方法就只能有一个src参数,而且是将该src合并到调用extend方法的对象中去,如:
- (1)$.extend(src)//该方法就是将src合并到jquery的全局对象中去,如:
- $.extend({ hello:function(){alert('hello');} });//就是将hello方法合并到jquery的全局对象中。
- (2)$.fn.extend(src)//该方法将src合并到jquery的实例对象中去,如:
- $.fn.extend({ hello:function(){alert('hello');} }); // 就是将hello方法合并到jquery的实例对象中。
- 下面例举几个常用的扩展实例:
- $.extend({net:{}}); //这是在jquery全局对象中扩展一个net命名空间。
- $.extend($.net,{ hello:function(){alert('hello');} })//这是将hello方法扩展到之前扩展的Jquery的net命名空间中去。
- 3.Jquery的extend方法还有一个重载原型:
- extend(boolean,dest,src1,src2,src3...) //第一个参数boolean代表是否进行深度拷贝,其余参数和前面介绍的一致,什么叫深层拷贝,我们看一个例子:
- (1)
- var result=$.extend( true, {}, {name: "John", location: {city: "Boston",county:"USA"} },
- { last: "Resig", location: {state: "MA",county:"China"} } );
- //我们可以看出src1中嵌套子对象location:{city:"Boston"},src2中也嵌套子对象location:{state:"MA"},第一个深度拷贝参数为true,那么合并后的结果就是:
- result={name:"John",last:"Resig", location:{city:"Boston",state:"MA",county:"China"}}
- //也就是说它会将src中的嵌套子对象也进行合并,而如果第一个参数boolean为false,我们看看合并的结果是什么,如下:
- (2)
- var result=$.extend( false, {}, { name: "John", location:{city: "Boston",county:"USA"} },
- { last: "Resig", location: {state: "MA",county:"China"} } ); //那么合并后的结果就是:
- result={name:"John",last:"Resig",location:{state:"MA",county:"China"}}
*each()
- 下面提一下each的几种常用的用法
- 1.each处理一维数组
- var arr1 = [ "aaa", "bbb", "ccc" ];
- $.each(arr1, function(i,val){
- alert(i);
- alert(val);
- });
- alert(i)将输出0,1,2
- alert(val)将输出aaa,bbb,ccc
- 2.each处理二维数组
- var arr2 = [['a', 'aa', 'aaa'], ['b', 'bb', 'bbb'], ['c', 'cc', 'ccc']]
- $.each(arr, function(i, item){
- alert(i);
- alert(item);
- });
- arr2为一个二维数组,item相当于取这二维数组中的每一个数组。
- item[0]相对于取每一个一维数组里的第一个值
- alert(i)将输出为0,1,2,因为这二维数组含有3个数组元素
- alert(item)将输出为 ['a', 'aa', 'aaa'],['b', 'bb', 'bbb'],['c', 'cc', 'ccc']
- 3.对此二位数组的处理稍作变更之后
- var arr = [['a', 'aa', 'aaa'], ['b', 'bb', 'bbb'], ['c', 'cc', 'ccc']]
- $.each(arr, function(i, item){
- $.each(item,function(j,val){
- alert(j);
- alert(val);
- });
- });
- alert(j)将输出为0,1,2,0,1,2,0,1,2
- alert(val)将输出为a,aa,aaa,b,bb,bbb,c,cc,ccc
- 4.each处理json数据,这个each就有更厉害了,能循环每一个属性
- var obj = { one:1, two:2, three:3};
- each(obj, function(key, val) {
- alert(key);
- alert(val);
- });
- 这里alert(key)将输出one two three
- alert(val)将输出one,1,two,2,three,3
- 这边为何key不是数字而是属性呢,因为json格式内是一组无序的属性-值,既然无序,又何来数字呢。
- 而这个val等同于obj[key]
- 5.ecah处理dom元素,此处以一个input表单元素作为例子。
- 如果你dom中有一段这样的代码
- <input name="aaa" type="hidden" value="111" />
- <input name="bbb" type="hidden" value="222" />
- <input name="ccc" type="hidden" value="333" />
- <input name="ddd" type="hidden" value="444"/>
- 然后你使用each如下
- $.each($("input:hidden"), function(i,val){
- alert(val);
- alert(i);
- alert(val.name);
- alert(val.value);
- }); 那么,alert(val)将输出[object HTMLInputElement],因为它是一个表单元素。
- alert(i)将输出为0,1,2,3
- alert(val.name);将输出aaa,bbb,ccc,ddd,如果使用this.name将输出同样的结果
- alert(val.value); 将输出111,222,333,444,如果使用this.value将输出同样的结果
- 如果将以上面一段代码改变成如下的形式
- $("input:hidden").each(function(i,val){
- alert(i);
- alert(val.name);
- alert(val.value);
- }); 可以看到,输出的结果是一样的,