jQuery小技巧(幹活) 1.返回頂部按鈕 你可以利用 animate 和 scrollTop 來實現返回頂部的動畫,而不需要使用其他插件。 改變 scrollTop 的值可以調整返回距離頂部的距離,而 animate 的第二個參數是執行返回動作需要的時間(單位:毫秒)。 2.預載入圖片 如果你的 ...
jQuery小技巧(幹活)
1.返回頂部按鈕
你可以利用 animate
和 scrollTop
來實現返回頂部的動畫,而不需要使用其他插件。
$('a.top').click(function(){ $(document.body).animate({scrollTop:0},800);returnfalse });
改變 scrollTop
的值可以調整返回距離頂部的距離,而 animate
的第二個參數是執行返回動作需要的時間(單位:毫秒)。
2.預載入圖片
如果你的頁面中使用了很多不可見的圖片(如:hover 顯示),你可能需要預載入它們:
$.preloadImages =function(){for(var i =0; i < arguments.length; i++){ $('<img>').attr('src', arguments[i]);}}; $.preloadImages('img/hover1.png','img/hover2.png');
3.檢查圖片是否載入完成
有時候你需要確保圖片完成載入完成以便執行後面的操作:
$('img').load(function(){ console.log('image load successful'); });
你可以把 img
替換為其他的 ID
或者 class
來檢查指定圖片是否載入完成。
4.自動修改破損圖像
如果你碰巧在你的網站上發現了破碎的圖像鏈接,你可以用一個不易被替換的圖像來代替它們。添加這個簡單的代碼可以節省很多麻煩:
$('img').on('error',function(){ $(this).prop('src','img/broken.png'); });
即使你的網站沒有破碎的圖像鏈接,添加這段代碼也沒有任何害處。
5.滑鼠懸停(hover)切換Class屬性
假如當用戶滑鼠懸停在一個可點擊的元素上時,你希望改變其效果,下麵這段代碼可以在其懸停在元素上時添加 class
屬性,當用戶滑鼠離開時,則自動取消該 class
屬性:
$('.btn').hover(function(){ $(this).addClass('hover');},function(){ $(this).removeClass('hover'); });
你只需要添加必要的CSS代碼即可。如果你想要更簡潔的代碼,可以使用 toggleClass
方法:
$('.btn').hover(function(){ $(this).toggleClass('hover'); });
註:直接使用CSS實現該效果可能是更好的解決方案,但你仍然有必要知道該方法。
6.禁用 input 欄位
有時你可能需要禁用表單的 submit
按鈕或者某個 input
欄位,直到用戶執行了某些操作(例如,檢查“已閱讀條款”覆選框)。可以添加 disabled
屬性,直到你想啟用它時:
$('input[type="submit"]').prop('disabled',true);
你要做的就是執行 removeAttr
方法,並把要移除的屬性作為參數傳入:
$('input[type="submit"]').removeAttr('disabled');
7.阻止鏈接載入
有時你不希望鏈接到某個頁面或者重新載入它,你可能希望它來做一些其他事情或者觸發一些其他腳本,你可以這麼做:
$('a.no-link').click(function(e){ e.preventDefault(); });
8.切換 fade/slide
fade 和 slide 是我們在 jQuery 中經常使用的動畫效果,它們可以使元素顯示效果更好。但是如果你希望元素顯示時使用第一種效果,而消失時使用第二種效果,則可以這麼做:
$('.btn').click(function(){ $('.element').fadeToggle('slow'); }); $('.btn').click(function(){ $('.element').slideToggle('slow'); });
9.簡單的手風琴效果
這是一個實現手風琴效果快速簡單的方法:
$('#accordion').find('.content').hide(); $('#accordion').find('.accordion-header').click(function(){varnext= $(this).next();next.slideToggle('fast'); $('.content').not(next).slideUp('fast');returnfalse; });
10.讓兩個 DIV 高度相同
有時你需要讓兩個 div 高度相同,而不管它們裡面的內容多少。可以使用下麵的代碼片段:
var $columns = $('.column'); var height =0;$columns.each(function(){if($(this).height()> height){ height = $(this).height();} }); $columns.height(height);
這段代碼會迴圈一組元素,並設置它們的高度為元素中的最大高。
11.css3實現div的淡入淡出效果。
@-webkit-keyframes fadeIn{ 0%{ opacity: 0;/*初始狀態*/ flter:"Alpha(Opacity=0)"; } 20%{ opacity: 0.2; flter:"Alpha(Opacity=0.2)"; } 40%{ opacity: 0.4; flter:"Alpha(Opacity=0.4)"; } 60%{ opacity: 0.6; flter:"Alpha(Opacity=0.6)"; } 80%{ opacity: 0.8; flter:"Alpha(Opacity=0.8)"; } 100%{ opacity: 1.0; flter:"Alpha(Opacity=1.0)"; } } .fadeInShow{ -webkit-animation-name: fadeIn;/*動畫名稱*/ -webkit-animation-duration: 300ms; /*動畫持續時間*/ -webkit-animation-iteration-count: 1; /*動畫次數*/ -webkit-animation-delay: 0s; /*延遲時間*/ }
引入動畫效果:
$('.my-project-selector').hover(function(){ $('#project-popover').css('display','block').addClass('fadeInShow'); },function(){ $('#project-popover').css('display','none').removeClass('fadeInShow'); });
12、Jquery遍歷一組checkbox覆選框,取出選中的值放在數組裡
var obj = $("input[name='projectId']"),arr=[],i=0; for(;i<obj.length;i++){ if(obj[i].checked){ arr.push(obj[i].value); } }
13、jquery的ajax錯誤error方法查看狀態值代碼
error: function(XMLHttpRequest) { //(canceled)==捕捉到的狀態值是 “0” if(XMLHttpRequest.status=="0"){ //屏蔽canceled狀態值 } }
14、超出部分截取字元,顯示“...”(超出的文字自動+省略號)
$.fn.limit=function(){ var self = $("*[limit]"); self.each( function(){ var objString = $.trim($(this).text()); var objLength = $.trim($(this).text()).length; var num = $(this).attr("limit"); if(objLength > num){ $(this).attr("title",objString); objString = $(this).text(objString.substring(0,num) + "..."); } } ) };
使用方式:<span limit="5">天空飄來五個字,那都不是事兒</span>
當前頁面寫入:
$("span[limit]").limit();
15、游標定位到字元最後(使用場景:input=text文本框獲取焦點後,游標顯示在字元最後)
//游標定位到字元最後
$.fn.selectRange = function(start, end) { return this.each(function() { if (this.setSelectionRange) { this.focus(); this.setSelectionRange(start, end); } else if (this.createTextRange) { var range = this.createTextRange(); range.collapse(true); range.moveEnd('character', end); range.moveStart('character', start); range.select(); } }); };
16、JS判斷是否為數組:
Object.prototype.toString.call([1,2,3]) === [object Array] //true