jquery学习(转载)
花了两天时间系统性的学习jQuery,获益匪浅。之前摸着石头写的一些jQuery程序也得到了相应的改良,以下便是我这两天的学习心得:
选择器 Selectors:
$( "*" ) //选择所有标签 $( "div:animated" ) //选择正在动画中的div标签 $( 'a[hreflang|=en]' ) //选择包含en的a标签,并且en后面只能跟"-" $( "input[name*='man']" ) //选择name属性中包含'man'的input标签 $( "input[name~=man]" ) //选择name属性中包含'man'但只能和空格相连的input标签,如 $("input[name~=man]") 匹配 <input name="milk man" /> $( "input[name$='letter']" ) //选择以'letter'结尾的input标签 $( "input[name='newsletter']" ) //选择name属性等于'newsletter'的input标签 $( "input[name!=newsletter]" ) //选择name属性不等于'newsletter'的input标签 $( "input[name^='news']" ) //选择name属性中以'news'开头的input标签 $( ":button" ) //匹配按钮 $( "form input:checkbox" ) //匹配多选按钮 $( "input:checked" ) //选择已勾选的按钮 $( "ul.topnav > li" ) //选择 ul.topnav 下一辈的 li 标签 $( ".myClass" ) //选择普配class名myClass的标签 $( "div:contains('John')" ) //选择包含'John'字符串的div标签 $( "form input" ) //匹配form标签下的所有input $( "input:disabled" ) //匹配已禁用的input $( "div" ) //选择div标签 $( "td:empty" ) //选择空的td标签 $( "input:enabled" ) //选择启用的input标签 $( "td:eq(2)" ) //选择第3个td标签 $( "tr:even" ) //选择偶数的tr标签(0,2,4...) $( "input:file" ) //选择文件域 $( "div span:first-child" ) //选择每个div标签下的第1个span标签(可能有多个) $( "tr:first" ) //选择第1个tr标签(只有一个) $( "td:gt(4)" ) //选择第5个td标签后的所有td标签(包含第5个) $( "div[id]" ) //选择包含id属性的div标签 $( "div:has(p)" ) //选择包含p标签的div标签 $( ":header" ) //选择h1,h2,h3,h4,h5,h6标签 $( ":hidden" ) //选择隐藏的标签 $( "#myDiv" ) //选择id为myDiv的标签 $( "input:image" ) //选择图像域 $( ":input" ) //选择input标签 $( "div span:last-child" ) //选择div下的最后一个span标签(可能有多个) $( "tr:last" ) //选择最后一个tr标签(只有一个) $( "td:lt(4)" ) //选择第5个以前的td标签(不包含第5个) $( "input[id][name$='man']" ) //多重属性选择,选择包含id属性和name属性以'man'结尾的input标签 $( "div,span,p.myClass" ) //多重选择,选择div标签,span标签和class名为myClass的p标签 $( "label + input" ) //选择前面是label标签的input标签 $( "#prev ~ div" ) //选择id为prev之后的所有同辈div标签 $( "input:not(:checked) + span" ) //选择前面是未勾选的多选按钮的span标签 $( "ul li:nth-child(2)" ) //选择ul标签下第2个li标签 $( "tr:odd" ) //选择奇数的tr标签 $( "div button:only-child" ) //选择div下只有一个button的input标签 $( "td:parent" ) //选择含有子元素或文本的td标签 $( "input:password" ) //选择密码框 $( "input:reset" ) //选择重设按钮 $( "select option:selected" ) //选择已被选的选项 $( ":submit" ) //选择提交按钮 $( "form input:text" ) //选择文本输入框 $( "div:visible" ) //选择显示的div元素
属性 Attributes:
$( 'p' ).addClass( 'myClass yourClass' ); //增加class名: myClass yourClass $( 'p' ).removeClass( 'myClass noClass' ).addClass( 'yourClass' ); //移除class名: myClass noClass, 并增加class名: yourClass $( 'ul li:last' ).addClass( function () { return 'item-' + $( this ).index(); }); //增加以"item-索引值"的class名 $( "p" ).toggleClass( "selected" ); //如果p标签下存在selected类,就删除该类,否则添加该类 $( "em" ).attr( "title" ) //返回em标签的title值 $( "img" ).attr( "src" , "test.jpg" ); //设置图片路径为"test.jpg" $( "img" ).attr( "title" , function () { return this .src }); //为所有img标签添加值为图片路径的title $( "img" ).attr({ src: "test.jpg" , alt: "Test Image" }); //批量设置标签属性 $( "p:last" ).hasClass( "selected" ) //判断最后一个p标签是否包含'selected'的class名 $( 'div.demo-container' ).html(); //返回类名为demo-container的div标签下的html内容,相当于innerHTML $( 'div.demo-container' ).html( '<p>true</p>' ); //设置类名为demo-container的div标签下的html内容为'<p>true</p>',相当于innerHTML $( 'div.demo-container' ).text(); //返回类名为demo-container的div标签下的html转为实体的内容 $( "#multiple" ).val() //返回#multiple的value值
筛选 Traversing:
$( "div" ).add( "p" ).css( "background" , "yellow" ); //在div标签中添加背景颜色为黄色的p标签 $( "p" ).add(document.getElementById( "a" )) //在p标签中添加id为a的 $( "div" ).find( "p" ).andSelf().addClass( "border" ); //div下的p标签,包括div标签都增加border类 $( "div" ).children( ".selected" ); //查找每个div标签中的已经被选择的子元素 $( 'li.item-a' ).closest( 'ul' ).css( 'background-color' , 'red' ); //将li.item-a最近的ul标签的背景颜色改为红色 $( "p" ).contents().not( "[nodeType=1]" ); //查找p标签下的所有文本节点 $( 'li' ).each( function (index) { alert(index + ': ' + $( this ).text()); }); //alert所有li标签的索引和内容 $( "p" ).find( "span" ).css( 'background-color' , 'red' ).end().css( 'background-color' , 'blue' ); //将p标签中的span背景颜色改为红色,然后将p标签背景颜色改成蓝色 $( "div" ).eq(-2).addClass( "blue" ); //将倒数第3个div增加blue类 $( 'li' ).filter( ':even' ).css( 'background-color' , 'red' ); //将偶数的li标签的背景颜色改成红色 $( 'li' ).filter( function (index) { return $( 'strong' , this ).length == 1; }).css( 'background-color' , 'red' ); //将包含1个strong标签的li标签背景颜色改成红色 $( "p" ).find( "span" ).css( 'color' , 'red' ); //将p标签中找到的所有span标签的颜色改成红色 $( "p span" ).first().addClass( 'highlight' ); //p标签下的第一个span标签加上highlight的类 $( 'li' ).has( 'ul' ).css( 'background-color' , 'red' ); //将包含ul的li标签背景颜色改成红色 $( 'ul' ).click( function (event) { if ($(event.target).is( 'li' ) ) { $(event.target).css( 'background-color' , 'red' ); } }); //如果在ul中点击的对象是li标签,则将li标签的背景颜色改成红色 $( 'li' ).last().css( 'background-color' , 'red' ); //将最后一个li标签的背景颜色改成红色 $( "p" ).append( $( "input" ).map( function (){ return $( this ).val(); }).get().join( ", " ) ); //将表单中input的所有值用", "分隔加入到p标签中去 $( "button[disabled]" ).next(); //选择被禁用的按钮的下一个同辈标签 $( "div:first" ).nextAll(); //选择第1个div标签后的所有同辈标签 $( '#term-2' ).nextUntil( 'dt' ); //选择#term-2后到下一个dt标签的所有标签 $( 'li' ).not(document.getElementById( 'notli' )); //选择id不等于notli的li标签 $( "div" ).not( ".green, #blueone" ); //选择id不等于blueone和类不包含.green的div标签 $( 'li.item-a' ).offsetParent(); //选择li.item-a的偏移父标签(拥有relative或absolute属性的父标签,如果都没有,就是body) $( "p" ).parent(); //查找所有p标签的父元素 $( 'li.item-a' ).parentsUntil( '.level-1' ); //查找li.item-a一直到.level-1的所有父标签 $( 'li.third-item' ).prev(); //li.third-item的上一个同辈标签 $( '#term-2' ).prevUntil( 'dt' ); #term-a前一直到dt的所有同辈标签 $( 'li.third-item' ).siblings(); //查找li.third-item的所有同辈函数 $( "p" ).slice(0, 1); //选择第1个p元素
文档处理 Manipulation:
addClass(); $( '.inner' ).after( '<p>Test</p>' ); //在.inner后面添加 "<p>Test</p>" $( "p" ).append( "<strong>Hello</strong>" ); //在p标签里添加 "<strong>Hello</strong>" $( "span" ).appendTo( "#foo" ); //将span标签及其所有内容移动到$fooli .attr(); $( '.container' ).before($( 'h2' )); //将h2移动到.container之前 $( '.container' ).before( "<b>here</b>" ); //将"<b>here</b>"加到.container之前 $($( 'h2' )).clone().appendTo( '.container' ); 将h2复制一份加到.container里 $( '#p' ).css( "background-color" ); //返回#p的background-color var obj = $( "p" ).detach(); //分离函数,清除p标签,并且将被清除的对象保存在变量obj中 $( "p" ).empty(); //删除p标签中的所有内容 hasClass(); $( "p" ).height(); //p标签的高度(不包括padding, border和margin) .html(); $( "p" ).innerHeight(); //p标签的内部高度(包括padding, 不包括border和margin) $( "p" ).innerWidth(); //p标签的内部宽度(包括padding, 不包括border和margin) $( '<p>Test</p>' ).insertAfter( '.inner' ); //将'<p>Test</p>'插入到.inner后面,作用等同于after,只是主宾位置不同 $( 'h2' ).insertBefore($( '.container' )); //将h2标签插入到.container之前,作用等同于before,只是主宾位置不同 var p = $( "p:last" ); var offset = p.offset(); p.html( "left: " + offset.left + ", top: " + offset.top ); //获取最后一个p标签的位移坐标 $( "p:first" ).outerHeight(); //最后一个p标签的高度(包含padding,border,不包含margin) $( "p:first" ).outerHeight( true ); //最后一个p标签的高度(包含padding,border,margin) $( "p:first" ).outerWidth(); //最后一个p标签的宽度(包含padding,border,不包含margin) $( "p:first" ).outerWidth( true ); //最后一个p标签的宽度(包含padding,border,margin) var p = $( "p:first" ); var position = p.position(); $( "p:last" ).text( "left: " + position.left + ", top: " + position.top ); //获取最后一个p标签的位置(不包含p标签的margin值) $( '.inner' ).prepend( '<p>Test</p>' ); //将'<p>Test</p>'加到.inner里的最前面 $( 'h2' ).prependTo($( '.container' )); //将h2移动到.container里的最前面去 $( '.hello' ).remove(); //删除包含.hello的标签 $( 'div' ).remove( '.hello' ); //删除包含.hello的div标签 $( "button" ).removeAttr( "disabled" ); //移除按钮的disabled属性 .removeClass(); $( '<h2>New heading</h2>' ).replaceAll( '.inner' ); //用h2整个替换掉.inner标签 $( '.second' ).replaceWith( '<h2>New heading</h2>' ); //将.second整个替换成'<h2>New heading</h2>' $( "p:first" ).scrollLeft(); //第1个p标签的横向滚动条值 $( "p:first" ).scrollTop(); //第1个p标签的纵向滚动条值 .text(); .toggleClass(); $( "button" ).toggle( function (){ $( "p" ).wrap( "<div></div>" ); }, function (){ $( "p" ).unwrap(); }); //如果p标签没有被div包含则添加div标签,否则去掉div标签 .val(); $( "p" ).width(); //p标签的宽度(不包括padding, border和margin) $( '.inner' ).wrap( '<div />' ); 将.inner标签分别用<div></div>包起来 $( '.inner' ).wrapAll( '<div />' ); 将所有的.inner标签组合在一起用一个<div></div>包起来 $( '.inner' ).wrapInner( '<div />' ); 用<div></div>将.inner里的内容包起来
层叠样式表 CSS:
.addClass(); .css(); .hasClass(); .height(); .innerHeight(); .innerWidth(); .offset(); .outerHeight(); .outerWidth(); .position(); .removeClass(); .scrollLeft(); .scrollTop(); .toggleClass(); .width();
事件 Events:
$( '#foo' ).bind( 'click' , function () { alert( 'User clicked on "foo."' ); }); //注册点击事件 $( '#other' ).blur( function () { $( '#target' ).blur(); }); //移除焦点时 $( '.target' ).change( function () { alert( 'Handler for .change() called.' ); }); //表单改变时 $( '#other' ).click( function () { $( '#target' ).click(); }); //单击时 $( '#target' ).dblclick( function () { alert( 'Handler for .dblclick() called.' ); }); //双击时 $( "body" ).delegate( "p" , "click" , function (){ $( this ).after( "<p>Another paragraph!</p>" ); }); //给p标签注册鼠标事件 $( "#theone" ).live( "click" , aClick); //激活#theone上的click事件,并调用aClick函数 $( "#theone" ).die( "click" , aClick); //禁用#theone上的click事件 $(window).error( function (){ return true ; }); //隐藏js脚本错误 $( "p" ).click( function (event) { alert( event.currentTarget === this ); // true }); //当前事件的对象 $( "a" ).each( function (i) { $( this ).bind( 'click' , {index:i}, function (e){ alert( 'my index is ' + e.data.index); }); }); //事件的索引 //在div上存储数据 $( "div" ).data( "blah" ); // undefined $( "div" ).data( "blah" , "hello" ); // blah设置为hello $( "div" ).data( "blah" ); // hello $( "div" ).data( "blah" , 86); // 设置为86 $( "div" ).data( "blah" ); // 86 $( "div" ).removeData( "blah" ); //移除blah $( "div" ).data( "blah" ); // undefined $( "a" ).click( function (event){ alert( event.isDefaultPrevented() ); // false event.preventDefault(); alert( event.isDefaultPrevented() ); // true }); //isDefaultPrevented? function immediatePropStopped(e) { var msg = "" ; if ( e.isImmediatePropagationStopped() ) msg = "called" else msg = "not called" ; $( "#stop-log" ).append( "<div>" + msg + "</div>" ); } $( "button" ).click( function (event) { immediatePropStopped(event); event.stopImmediatePropagation(); //停止执行该事件 immediatePropStopped(event); }); //isImmediatePropagationStopped 判断函数或事件是否被禁止执行 function propStopped(e) { var msg = "" ; if ( e.isPropagationStopped() ) msg = "called" else msg = "not called" ; $( "#stop-log" ).append( "<div>" + msg + "</div>" ); } $( "button" ).click( function (event) { propStopped(event); event.stopPropagation(); propStopped(event); }); //isPropagationStopped? stopPropagation? $(document).bind( 'mousemove' , function (e){ $( "#log" ).text( "e.pageX: " + e.pageX + ", e.pageY: " + e.pageY); }); //相对于文档的鼠标坐标 $( "a" ).click( function (event) { event.preventDefault(); }); //阻止链接的所有行为,包括打开链接 $( "a" ).mouseout( function (event) { alert(event.relatedTarget.nodeName); // "DIV" }); //返回与事件有关联的对象 $( "button" ).click( function (event) { return "hey" ; }); $( "button" ).click( function (event) { $( "p" ).html( event.result ); }); //返回鱼事件相关的结果 $( "p" ).click( function (event){ event.stopImmediatePropagation(); }); $( "p" ).click( function (event){ // This function won't be executed $( this ).css( "background-color" , "#f00" ); }); //停止执行某事件 $( "body" ).click( function (event) { $( "#log" ).html( "clicked: " + event.target.nodeName); }); //返回被点击对象 event.timeStamp; //时间的时间戳,可以用来计算两次事件间隔的时间 $( "a" ).click( function (event) { alert(event.type); // "click" }); //返回事件类型 $(' #whichkey').bind('keydown',function(e){ $(' #log').html(e.type + ': ' + e.which ); }); //返回按键的ascii码 $(' #target').focus(function() { alert('Handler for .focus() called. '); }); //聚焦事件时 $("p").focusin(function() { $(this).find("span").css(' display ',' inline ').fadeOut(1000); }); var fo = 0, b = 0; $("input").focusout(function() { fo++; $("#fo").text("focusout fired: " + fo + "x"); }).blur(function() { b++; $("#b").text("blur fired: " + b + "x"); }); //移出焦点时 $(' #target').keydown(function() { alert('Handler for .keydown() called. '); }); //按下按键时 $(' #target').keypress(function() { alert('Handler for .keypress() called. '); }); //按下按键时 $(' #target').keyup(function() { alert('Handler for .keyup() called. '); }); //抬起按键时 $("p").live("myCustomEvent", function(e, myName, myValue){ $(this).text("Hi there!"); $("span").stop().css("opacity", 1).text("myName = " + myName).fadeIn(30).fadeOut(1000); }); $("button").click(function () { $("p").trigger("myCustomEvent"); }); //live? $(window).load(function () { // run code }); $(' #book').load(function() { // Handler for .load() called. }); //读取事件 $(' #target').mousedown(function() { alert('Handler for .mousedown() called. '); }); //鼠标按下事件 $("div.overout").mouseover(function(){ $("p:first",this).text("mouse over"); $("p:last",this).text(++i); }).mouseout(function(){ $("p:first",this).text("mouse out"); }); //鼠标经过和离开 $("div.enterleave").mouseenter(function(){ $("p:first",this).text("mouse enter"); $("p:last",this).text(++n); }).mouseleave(function(){ $("p:first",this).text("mouse leave"); }); //鼠标进入和离开 $("div").mousemove(function(e){ var pageCoords = "( " + e.pageX + ", " + e.pageY + " )"; var clientCoords = "( " + e.clientX + ", " + e.clientY + " )"; $("span:first").text("( e.pageX, e.pageY ) - " + pageCoords); $("span:last").text("( e.clientX, e.clientY ) - " + clientCoords); }); //鼠标移动时 $(' #target').mouseup(function() { alert('Handler for .mouseup() called. '); }); //鼠标松开按键时 $("p").one("click", function(){ alert( $(this).text() ); }); //只执行一次事件 var obj = { name: "John", test: function() { alert( this.name ); $("#test").unbind("click", obj.test); } }; $("#test").click( jQuery.proxy( obj, "test" ) ); // This also works: // $("#test").click( jQuery.proxy( obj.test, obj ) ); // 代理事件 $(document).ready(function() { // Handler for .ready() called. }); //当文档完全加载时 $(window).resize(function() { $(' #log').append('<div>Handler for .resize() called.</div>'); }); //当窗口大小改变时 $(' #target').scroll(function() { $(' #log').append('<div>Handler for .scroll() called.</div>'); }); //当拖动滚动条时 $(' #target').select(function() { alert('Handler for .select() called. '); }); //当选择时 $(' #target').submit(function() { alert('Handler for .submit() called. '); return false; }); //当表单提交时 $("li").toggle( function () { $(this).css({"list-style-type":"disc", "color":"blue"}); }, function () { $(this).css({"list-style-type":"disc", "color":"red"}); }, function () { $(this).css({"list-style-type":"", "color":""}); } ); //切换开关,第一次点击蓝色,第二次点击是红色,第三次点击是默认色,循环 $("button:first").trigger(' click '); //触发第一个button的click事件 $("input").triggerHandler("focus"); //触发focus事件 $(' #foo').unbind('click', handler); //移除click事件 $( "body" ).undelegate( "#theone" , "click" , aClick); //移除委任的事件 $(window).unload( function () { alert( "Bye now!" ); } ); //窗口关闭时
效果 Effects:
$( "#block" ).animate({ width: "70%" , opacity: 0.4, marginLeft: "0.6in" , fontSize: "3em" , borderWidth: "10px" }, 1500 ); //动画效果 $( "div" ).clearQueue(); //清除队列 $( "div.first" ).slideUp(300).delay(800).fadeIn(400); 延迟800毫秒进入下一个动画 $( "div" ).animate({left: '+=200px' }, 2000); $( "div" ).animate({top: '0px' }, 600); $( "div" ).queue( function () { $( this ).toggleClass( "red" ); $( this ).dequeue(); //离队,如果没有这个就会卡在上一步 }); $( "div" ).animate({left: '10px' , top: '30px' }, 700); $( "div:hidden:first" ).fadeIn( "slow" ); //慢速淡入 $( '#book' ).fadeOut( 'slow' , function () { // Animation complete. }); //慢速淡出,并调用动画函数 $( "p:first" ).click( function () { $( this ).fadeTo( "slow" , 0.33); }); //慢速调整不透明度到 0.33 var toggleFx = function () { $.fx.off = !$.fx.off; }; //打开和关闭jQuery效果 toggleFx(); $( "button" ).click(toggleFx); $( "input" ).click( function (){ $( "div" ).toggle( "slow" ); }); $( '#book' ).hide( 'slow' , function () { alert( 'Animation complete.' ); }); //慢速隐藏标签,并调用函数 $( "#show" ).click( function () { var n = $( "div" ).queue( "fx" ); $( "span" ).text( "Queue length is: " + n.length); }); //计算当前动画所属的队列长度 function runIt() { $( "div" ).show( "slow" ); $( "div" ).animate({left: '+=200' },2000); $( "div" ).slideToggle(1000); $( "div" ).slideToggle( "fast" ); $( "div" ).animate({left: '-=200' },1500); $( "div" ).hide( "slow" ); $( "div" ).show(1200); $( "div" ).slideUp( "normal" , runIt); } runIt(); $( '#clickme' ).click( function () { $( '#book' ).show( 'slow' , function () { // Animation complete. }); }); //慢速显示并调用函数 $( "div" ).slideDown( "slow" ); //向下播放幻灯 $( "div" ).slideUp( "slow" ); //向上播放幻灯 $( "button" ).click( function () { $( "p" ).slideToggle( "slow" ); }); //循环切换幻灯效果 $( this ).find( 'img' ).stop( true , true ).fadeOut(); //停止动画,并且清除队列跳到最后,stop的两个参数默认都是false .toggle();
AJAX:
$.ajax({ async: true , //(默认: true) 是否异步, cache: true , //(默认: true) 是否缓存, false可用在 dataType 'script' 和 'jsonp' dataType: 'text' , //返回的数据类型,可以是 'xml', 'html', 'json', 'jsonp', 'script', 'text'. beforeSend: function () { $( this ).append( "<p>Before Send!</p>" ); }, //在发送http请求之前执行的函数 complete: function (XMLHttpRequest, textStatus) { $( this ).append( "<p>XML is load completed, Stats is " + textStatus + "!</p>" ); }, contentType: "application/x-www-form-urlencoded" , //内容类型,默认是 "application/x-www-form-urlencoded" context: $( '.result' ), //上下文, $(this) = $('.result') data: { uid: 1, foo:[ "bar1" , "bar2" ], /*自动转换为 '&foo=bar1&foo=bar2' */ }, //url参数,可以是对象也可以是字符串('foo=bar1&foo=bar2') dataFilter: function (data, type) { var data = data + " 增加的数据" ; return data; }, //对返回的数据进行过滤处理 error: function (XMLHttpRequest, textStatus, errorThrown) { $( this ).append( "<p>XMLHttpRequest " +XMLHttpRequest+ " & textStatus" + textStatus + "errorThrown: " + errorThrown + "</p>" ); }, //错误时 global: true , //(默认: true) 是否触发全局 AJAX 事件。设置为 false 将不会触发全局 AJAX 事件,如 ajaxStart 或 ajaxStop 可用于控制不同的 Ajax 事件 ifModified: false , //(默认: false) 仅在服务器数据改变时获取新数据。使用 HTTP 包 Last-Modified 头信息判断。 jsonp: 'onJsonPLoad' , //在一个jsonp请求中重写回调函数的名字。这个值用来替代在"callback=?"这种GET或POST请求中URL参数里的"callback"部分,比如{jsonp:'onJsonPLoad'}会导致将"onJsonPLoad=?"传给服务器。 jsonpCallback: 'onJsonPLoad' , //用不上 password: '12345678' , //用于响应HTTP访问认证请求的密码 processData: true , //(默认: true) 默认情况下,发送的数据将被转换为对象(技术上讲并非字符串) 以配合默认内容类型 "application/x-www-form-urlencoded"。如果要发送 DOM 树信息或其它不希望转换的信息,请设置为 false。 scriptCharset: 'utf-8' , //只有当请求时dataType为"jsonp"或"script",并且type是"GET"才会用于强制修改charset。通常在本地和远程的内容编码不同时使用。 success: function (data, textStatus, XMLHttpRequest) { $( this ).append( "<p>Result: " +data+ "</p>" ); $( this ).append( '<p>Load was performed. Stats is ' + textStatus + '!</p>' ); }, //成功时 timeout: '20000' , //设置请求超时时间(毫秒)。此设置将覆盖全局设置。 traditional: true , //如果想使用传统的参数数列,将此项设置为true type: 'POST' , //(默认: "GET") 请求方式 ("POST" 或 "GET"), 默认为 "GET"。注意:其它 HTTP 请求方法,如 PUT 和 DELETE 也可以使用,但仅部分浏览器支持。 url: '杂志改版颜色.txt' , //(默认: 当前页地址) 发送请求的地址。 username: 'kbzwxq' , //用于响应HTTP访问认证请求的用户名 //xhr: function() { alert("x") } //回调函数生成 XMLHttpRequest 对象. Defaults to the ActiveXObject when available (IE), the XMLHttpRequest otherwise. Override to provide your own implementation for XMLHttpRequest or enhancements to the factory. }); $.ajaxSetup({ url: '杂志改版颜色.txt' , success: function (data, textStatus, XMLHttpRequest) { $( '.result' ).append( "<p>Result: " +data+ "</p>" ); $( '.result' ).append( '<p>Load was performed. Stats is ' + textStatus + '!</p>' ); } }); //安装ajax $.ajax();
< div style = "background: red;color: #fff;" >Trigger</ div > < div style = "background: green;color: #fff;" ></ div > < div style = "background: blue;color: #fff;" ></ div > < script > $('.log').ajaxStart(function() { $(this).append('< p >Triggered ajaxStart handler.</ p >'); }); //当ajax开始时 $('.log').ajaxSend(function(e, xhr, settings) { if (settings.url == '杂志改版颜色.txt') $(this).append('< p >Triggered ajaxSend handler.</ p >'); }); //当ajax请求发送时执行 $('.log').ajaxSuccess(function(e, xhr, settings) { if (settings.url == '杂志改版颜色.txt') $(this).append('< p >Triggered ajaxSuccess handler.</ p >'); }); //当ajax成功时 $('.log').ajaxComplete(function(e, xhr, settings) { if (settings.url == '杂志改版颜色.txt') $(this).append('< p >Triggered ajaxComplete handler.</ p >'); }); //当ajax完成时执行 $('.log').ajaxStop(function() { $(this).append('< p >Triggered ajaxStop handler.</ p >'); }); //当ajax停止时 $('.log').ajaxError(function(e, xhr, settings, exception) { if (settings.url == '杂志改版颜色1.txt') $(this).text('Triggered ajaxError handler.'); }); //当ajax错误时执行 $('.trigger').click(function() { $('.result').load('杂志改版颜色.txt', function() { $('.log').append('< p >Load was performed.</ p >'); }); }); </ script > < ul id = "footerNavigation" > < li >< a href = "#" >Download</ a ></ li > < li >< a href = "#" >Documentation</ a ></ li > < li >< a href = "#" >Tutorials</ a ></ li > < li >< a href = "#" >Bug Tracker</ a ></ li > < li >< a href = "#" >Discussion</ a ></ li > </ ul > < b >Footer navigation:</ b > < ol id = "new-nav" ></ ol > < script > $("#new-nav").load("#footerNavigation li"); //将#footerNavigation下的所有li读取到#new-nav </ script > < div style = "background: blue;color: #fff;" ></ div > < script > var myObject = { a: { one: 1, two: 2, three: 3 }, b: [1,2,3] }; var recursiveEncoded = $.param(myObject, true); //是否使用传统参数 true var recursiveDecoded = decodeURIComponent($.param(myObject)); jQuery('.log').append("< p >"+recursiveEncoded+"</ p >"); jQuery('.log').append("< p >"+recursiveDecoded+"</ p >"); </ script > //转换url参数
$.get( '杂志改版颜色.txt' , { name: "John" , time: "2pm" }, function (data, textStatus, XMLHttpRequest) { $( '.result' ).html(data); }, 'text' ); //Ajax GET $.post( '杂志改版颜色.txt' , { name: "John" , time: "2pm" }, function (data, textStatus, XMLHttpRequest) { $( '.result' ).html(data); }, 'text' ); //Ajax POST $.getJSON( 'ajax/test.json' , function (data) { $( '.result' ).html( '<p>' + data.foo + '</p>' + '<p>' + data.baz[1] + '</p>' ); }); //读取json $.getScript( 'ajax/test.js' , function (data, textStatus) { alert( 'Load was performed.' ); }); //读取脚本 $( 'form' ).submit( function () { alert($( this ).serialize()); //返回表单的url参数 return false ; }); $( 'form' ).submit( function () { alert($( this ).serializeArray()); //返回表单的url参数对象数组 return false ; });
工具 Utilities:
jQuery.boxModel; //判断浏览器是否使用了符合w3c的标准盒模型 jQuery.each(jQuery.browser, function (i, val) { $( "<div>" + i + " : <span>" + val + "</span>" ).appendTo(document.body); }); //判断浏览器的类型 $( "#start" ).click( function () { $( "div" ).show( "slow" ); $( "div" ).animate({left: '+=200' },5000); $( "div" ).queue( function () { $( this ).addClass( "newcolor" ); $( this ).dequeue(); }); $( "div" ).animate({left: '-=200' },1500); $( "div" ).queue( function () { $( this ).removeClass( "newcolor" ); $( this ).dequeue(); }); $( "div" ).slideUp(); }); $( "#stop" ).click( function () { $( "div" ).clearQueue(); //清除动画队列 $( "div" ).stop(); }); jQuery.contains(document.documentElement, document.body); // true jQuery.contains(document.body, document.documentElement); // false //判断前者是否包含后者 var div = $( "div" )[0]; jQuery.data(div, "test" , { first: 16, last: "pizza!" }); $( "span:first" ).text(jQuery.data(div, "test" ).first); $( "span:last" ).text(jQuery.data(div, "test" ).last); //保存数据到标签中 $( "button" ).click( function () { $( "div" ).animate({left: '+=200px' }, 2000); $( "div" ).animate({top: '0px' }, 600); $( "div" ).queue( function () { $( this ).toggleClass( "red" ); $( this ).dequeue(); //执行下一个函数队列 }); $( "div" ).animate({left: '10px' , top: '30px' }, 700); }); $( "button" ).click( function () { $( "div" ).animate({left: '+=200px' }, 2000); $( "div" ).animate({top: '0px' }, 600); $( "div" ).queue( function () { $( this ).toggleClass( "red" ); $.dequeue( this ); //执行下一个函数队列 }); $( "div" ).animate({left: '10px' , top: '30px' }, 700); }); $.each([52, 97], function (index, value) { alert(index + ': ' + value); }); //通用例遍方法,可用于例遍对象和数组。 var map = { 'flammable' : 'inflammable' , 'duh' : 'no duh' }; $.each(map, function (key, value) { alert(key + ': ' + value); }); //通用例遍方法,可用于例遍对象和数组。 //合并 settings 和 options,修改并返回 settings。 var settings = { validate: false , limit: 5, name: "foo" }; var options = { validate: true , name: "bar" }; jQuery.extend(settings, options); //合并 defaults 和 options, 不修改 defaults。 var empty = {} var defaults = { validate: false , limit: 5, name: "foo" }; var options = { validate: true , name: "bar" }; var settings = jQuery.extend(empty, defaults, options); jQuery.globalEval( "var newVar = true;" ); //以全局方式执行javascript $.grep( [0,1,2], function (n,i){ return n > 0; }); //过滤小于或等于0的数组项目 var arr = [ 4, "Pete" , 8, "John" ]; jQuery.inArray( "John" , arr); //判断'John'是否在arr数组里并返回索引值, 如果不存在则返回-1 $.isArray([]); //判断参数是否为数组,return true/false. jQuery.isEmptyObject({}) // true jQuery.isEmptyObject({ foo: "bar" }) // false //判断是否为空的对象 jQuery.isFunction(objs[i]); //判断是否为函数 jQuery.isPlainObject({}) // true jQuery.isPlainObject( "test" ) // false //判断是否为简单对象 jQuery.isXMLDoc(document) // false jQuery.isXMLDoc(document.body) // false //判断是否为xml文档 var elems = document.getElementsByTagName( "div" ); // returns a nodeList var arr = jQuery.makeArray(elems); //将类数组对象转换为数组对象 var newArr = $.map( [0,1,2], function (n){ return n + 4; }); //将源数组中的所有键值+4后赋值给新数组 var first = [ 'a' , 'b' , 'c' ]; var second = [ 'd' , 'e' , 'f' ]; $.merge($.merge([], first), second); //合并两个数组, 不赋值给第一个数组 $.merge(first, second); //合并两个数组, 并将结果赋值给第一个数组 jQuery.noop(); //一个空函数 var obj = jQuery.parseJSON( '{"name":"John"}' ); alert( obj.name === "John" ); //从语法上分析一个JSON字符串 var obj = { name: "John" , test: function () { alert( this .name ); $( "#test" ).unbind( "click" , obj.test); } }; $( "#test" ).click( jQuery.proxy( obj, "test" ) ); //代理对象函数 obj.queue(); //函数队列? jQuery.queue(); //函数队列? jQuery.removeData(div, "test1" ); //移除标签上的数据 jQuery.support.boxModel; //是否支持w3c盒模型 $.trim( " hello, how are you? " ); //删除字符串首尾的空格 var divs = $( "div" ).get(); // 将对象转换为对象数组 divs = divs.concat($( ".dup" ).get()); //合并3个对象数组到divs $( "div:eq(1)" ).text( "Pre-unique there are " + divs.length + " elements." ); //有9个元素 divs = jQuery.unique(divs); //其中有3个是重复的,需要用unique函数去掉他们 $( "div:eq(2)" ).text( "Post-unique there are " + divs.length + " elements." ).css( "color" , "red" ); //就只有6个了
版权声明:
作者:xiaoniba
链接:https://blog.xiaoniba.com/2017/02/09/test-%e4%b8%83%e5%b9%b4%e5%82%a8%e5%ad%98/
来源:小泥吧的博客
文章版权归作者所有,未经允许请勿转载。
THE END
二维码
共有 0 条评论