很是實用的12 個 jQuery 代碼片斷

jQuery是一個很是流行並且實用的JavaScript前端框架,本文並非介紹jQuery的特效動畫,而是分享一些平時積累的12個jQuery實用代碼片斷,但願對你有所幫助。php

1. 導航菜單背景切換效果css

在項目的前端頁面裏,相對於其它的導航菜單,激活的導航菜單須要設置不一樣的背景。這種效果實現的方式有不少種,下面是使用JQuery實現的一種方式:html

<ul id='nav'> 
    <li>導航一</li> 
    <li>導航二</li> 
    <li>導航三</li> 
</ul> 
 
//注意:代碼須要修飾完善 
$('#nav').click(function(e) { 
  // 要知道siblings的使用 
$(e.target).addClass('tclass').siblings('.tclass').removeClass('tclass');; 
    });

2.反序訪問JQuery對象裏的元素前端

在某些場景下,咱們可能須要反序訪問經過JQuery選擇器獲取到的頁面元素對象,這個怎麼實現呢?看下面代碼:java

//要掌握JQuery對象的get方法 以及數組的reverse方法便可 
var arr = $('#nav').find('li').get().reverse(); 
$.each(arr,function(index,ele){ 
     .... ... 
});

3.訪問IFrame裏的元素web

在大多數狀況下,IFrame並非好的解決方案,但因爲各類緣由,項目中確實用到了IFrame,因此你須要知道怎麼去訪問IFrame裏的元素正則表達式

var iFrameDOM = $("iframe#someID").contents(); 
//而後,就能夠經過find方法來遍歷獲取iFrame中的元素了 
iFrameDOM.find(".message").slideUp();

4. 管理搜索框的值數組

如今各大網站都有搜索框,而搜索框一般都有默認值,當輸入框獲取焦點時,默認值消失。而一旦輸入框失去焦點,而輸入框裏又沒有輸入新的值,輸入框裏的值又會恢復成默認值,若是往輸入框裏輸入了新值,則輸入框的值爲新輸入的值。這種特效用JQuery很容易實現:緩存

$("#searchbox") 
   .focus(function(){$(this).val('')}) 
   .blur(function(){ 
       var $this = $(this); 
      // '請搜索...'爲搜索框默認值 
      ($this.val() === '')? $this.val('請搜索...') : null; 
});

5.部分頁面加載更新前端框架

爲了提升web性能,有更新時咱們一般不會加載整個頁面,而只是僅僅更新部分頁面內容,如圖片的延遲加載等。頁面部分刷新的特效在JQuery中也很容易實現:

setInterval(function() {   //每隔5秒鐘刷新頁面內容 
      //獲取的內容將增長到 id爲content的元素後 
     $("#content").load(url); 
}, 5000);

6.採用data方法來緩存數據

在項目中,爲了不屢次重複的向服務器請求數據,一般會將獲取的數據緩存起來以便後續使用。經過JQuery能夠很優雅的實現該功能:

var cache = {}; 
$.data(cache,'key','value'); //緩存數據 
  //獲取數據 
$.data(cache,'key');

7.採配置JQuery與其它庫的兼容性

若是在項目中使用JQuery,$ 是最經常使用的變量名,但JQuery並非惟一一個使用$做爲變量名的庫,爲了不命名衝突,你能夠按照下面方式來組織你的代碼:

//方法一: 爲JQuery從新命名爲 $j 
var $j = jQuery.noConflict(); 
$j('#id').... 
 
//方法二: 推薦使用的方式 
(function($){ 
    $(document).ready(function(){ 
        //這兒,你能夠正常的使用JQuery語法 
    }); 
})(jQuery);

8.克隆table header到表格的最下面

爲了讓table具備更好的可讀性,咱們能夠將表格的header信息克隆一份到表格的底部,這種特效經過JQuery就很容易實現:

var $tfoot = $('<tfoot></tfoot>'); 
$($('thead').clone(true, true).children().get().reverse()).each(function(){ 
    $tfoot.append($(this)); 
}); 
$tfoot.insertAfter('table thead');

9. 根據視窗(viewport)建立一個全屏寬度和高度(width/height)的div

下面代碼徹底可讓你根據viewport建立一個全屏的div。這對在不一樣窗口大小下展現modal或對話框時很是有效:

$('#content').css({ 
    'width': $(window).width(), 
    'height': $(window).height(), 
}); 
// make sure div stays full width/height on resize 
$(window).resize(function(){ 
    var $w = $(window); 
    $('#content').css({ 
      'width': $w.width(), 
      'height': $w.height(), 
    }); 
});

10 測試密碼的強度

在某些網站註冊時經常會要求設置密碼,網站也會根據輸入密碼的字符特色給出相應的提示,如密碼太短、強度差、強度中等、強度強等。這又是怎麼實現的呢?看下面代碼:

<input type="password" name="pass" id="pass" /> 
<span id="passstrength"></span> 
 
//下面的正則表達式建議各位收藏哦,項目上有可能會用得着 
$('#pass').keyup(function(e) { 
      //密碼爲八位及以上而且字母數字特殊字符三項都包括 
     var strongRegex = new RegExp("^(?=.{8,})(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*\\W).*$", "g"); 
 
  //密碼爲七位及以上而且字母、數字、特殊字符三項中有兩項,強度是中等 
     var mediumRegex = new RegExp("^(?=.{7,})(((?=.*[A-Z])(?=.*[a-z]))|((?=.*[A-Z])(?=.*[0-9]))|((?=.*[a-z])(?=.*[0-9]))).*$", "g"); 
     var enoughRegex = new RegExp("(?=.{6,}).*", "g"); 
     if (false == enoughRegex.test($(this).val())) { 
             $('#passstrength').html('More Characters'); 
     } else if (strongRegex.test($(this).val())) { 
             $('#passstrength').className = 'ok'; 
             $('#passstrength').html('Strong!'); 
     } else if (mediumRegex.test($(this).val())) { 
             $('#passstrength').className = 'alert'; 
             $('#passstrength').html('Medium!'); 
     } else { 
             $('#passstrength').className = 'error'; 
             $('#passstrength').html('Weak!'); 
     } 
     return true; 
});

11.使用JQuery重繪圖片的大小

關於圖片大小的重繪,你能夠在服務端來實現,也能夠經過JQuery在客戶端實現。

$(window).bind("load", function() { 
     // IMAGE RESIZE 
     $('#product_cat_list img').each(function() { 
          var maxWidth = 120; 
          var maxHeight = 120; 
          var ratio = 0; 
          var width = $(this).width(); 
          var height = $(this).height(); 
 
          if(width > maxWidth){ 
           ratio = maxWidth / width; 
           $(this).css("width", maxWidth); 
           $(this).css("height", height * ratio); 
           height = height * ratio; 
          } 
          var width = $(this).width(); 
          var height = $(this).height(); 
          if(height > maxHeight){ 
           ratio = maxHeight / height; 
           $(this).css("height", maxHeight); 
           $(this).css("width", width * ratio); 
           width = width * ratio; 
          } 
     }); 
     //$("#contentpage img").show(); 
     // IMAGE RESIZE 
});

12.滾動時動態加載頁面內容

有些網站的網頁內容不是一次性加載完畢的,而是在鼠標向下滾動時動態加載的,這是怎麼作到的呢?看下面代碼:

var loading = false; 
$(window).scroll(function(){ 
if((($(window).scrollTop()+$(window).height())+250)>=$(document).height()){ 
      if(loading == false){ 
           loading = true; 
           $('#loadingbar').css("display","block"); 
           $.get("load.php?start="+$('#loaded_max').val(), function(loaded){ 
                $('body').append(loaded); 
                $('#loaded_max').val(parseInt($('#loaded_max').val())+50); 
                $('#loadingbar').css("display","none"); 
                loading = false; 
           }); 
      } 
} 
}); 
 
$(document).ready(function() { 
$('#loaded_max').val(50); 
});
相關文章
相關標籤/搜索