jquery知识点总结

*引用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);       
}); 可以看到,输出的结果是一样的,



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值