30个经典的jQuery代码开发技巧
本文实例总结了30个经典的jQuery代码开发技巧。分享给大家供大家参考。具体如下:
1.创建一个嵌套的过滤器
.filter(":not(:has(.selected))")//去掉所有不包含class为.selected的元素
2.重用你的元素查询
varallItems=$("div.item"); varkeepList=$("div#container1div.item"); <div>classnames:$(formToLookAt+"input:checked").each(function(){keepListkeepList=keepList.filter("."+$(this).attr("name")); }); </div>
3.使用has()来判断一个元素是否包含特定的class或者元素
//jQuery1.4.*includessupportforthehasmethod.Thismethodwillfind //ifaanelementcontainsacertainotherelementclassorwhateveritis //youarelookingforanddoanythingyouwanttothem. $("input").has(".email").addClass("email_icon");
4.使用jQuery切换样式
//Lookforthemedia-typeyouwishtoswitchthensetthehreftoyournewstylesheet $('link[media='screen']').attr('href','Alternative.css');
5.限制选择的区域
//Wherepossible,pre-fixyourclassnameswithatagname //sothatjQuerydoesn'thavetospendmoretimesearching //fortheelementyou'reafter.Alsorememberthatanything //youcandotobemorespecificaboutwheretheelementis //onyourpagewillcutdownonexecution/searchtimes varin_stock=$('#shopping_cart_itemsinput.is_in_stock'); <ulid="shopping_cart_items"> <li><inputvalue="Item-X"name="item"type="radio">ItemX</li> <li><inputvalue="Item-Y"name="item"type="radio">ItemY</li> <li><inputvalue="Item-Z"name="item"type="radio">ItemZ</li> </ul>
6.如何正确使用ToggleClass
//Toggleclassallowsyoutoaddorremoveaclass //fromanelementdependingonthepresenceofthat //class.Wheresomedeveloperswoulduse: a.hasClass('blueButton')?a.removeClass('blueButton'):a.addClass('blueButton'); //toggleClassallowsyoutoeasilydothisusinga.toggleClass('blueButton');
7.设置IE指定的功能
if($.browser.msie){ //InternetExplorerisasadist. }
8.使用jQuery来替换一个元素
$('#thatdiv').replaceWith('fnuh');
9.验证一个元素是否为空
if($('#keks').html()){ //Nothingfound; }
10.在无序的set中查找一个元素的索引
$("ul>li").click(function(){varindex=$(this).prevAll().length;});
11.绑定一个函数到一个事件
$('#foo').bind('click',function(){alert('Userclickedon"foo."');});
12.添加HTML到一个元素
$('#lal').append('sometext');
13.创建元素时使用对象来定义属性
vare=$("",{href:"#",class:"a-classanother-class",title:"..."});
14.使用过滤器过滤多属性
//Thisprecision-basedapproachedcanbeusefulwhenyouuse //lotsofsimilarinputelementswhichhavedifferenttypes varelements=$('#someidinput[type=sometype][value=somevalue]').get();
15.使用jQuery预加载图片
jQuery.preloadImages=function(){for(vari=0;i').attr('src',arguments[i]);}}; //Usage$.preloadImages('image1.gif','/path/to/image2.png','some/image3.jpg');
16.设置任何匹配一个选择器的事件处理程序 [code]$('button.someClass').live('click',someFunction); //NotethatinjQuery1.4.2,thedelegateandundelegateoptionshavebeen //introducedtoreplaceliveastheyofferbettersupportforcontext //Forexample,intermsofatablewherebeforeyouwoulduse.. // .live()$("table").each(function(){$("td",this).live("hover",function(){$(this).toggleClass("hover");});}); //Nowuse.. $("table").delegate("td","hover",function(){$(this).toggleClass("hover");});