jquery知识点总结

来源:互联网 发布:41478 网络电视直播 编辑:程序博客网 时间:2024/05/18 01:17

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