經驗分享:10個簡單實用的 jQuery 代碼片段

平滑滾動到錨點

  這個功能很常見,在網站底部添加一個讓訪客快速回到頁面頂部的功能,下面是實現這個功能的示例代碼:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// HTML:
// <h1 id="anchor">Lorem Ipsum</h1>
// <p><a href="#anchor" class="topLink">Back to Top</a></p>
 
$(document).ready(function() {
    $("a.topLink").click(function() {
        $("html, body").animate({
            scrollTop: $($(this).attr("href")).offset().top + "px"
        }, {
            duration: 500,
            easing: "swing"
        });
        return false;
    });
});

縮放圖片

  雖然圖片應該在服務器端縮放,不過如果服務器端未做縮放,需要再客戶端縮放的時候,可以使用下面這個方便的代碼片段:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
$(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
});

滾動時自動加載內容

  很多網站使用了流行的瀑布圖佈局,這種類型的網站在頁面滾動的時候會自動加載內容。下面這段代碼讓你能夠把這個功能搬到你的網站上。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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);
});

檢測密碼強度

  在表單功能中,經常會有檢測用戶輸入的密碼強度的功能,下面這個代碼片段使用正則表達式來檢測密碼是否足夠安全,當然記得在服務端也進行表單驗證。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$('#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;
});

均衡元素的高度

  使用純 CSS代碼實現均衡元素的高度比較困難,而下面這段 jQuery 代碼會根據最高的元素來均衡所有的 Div 元素。

1
2
3
4
5
6
7
var maxHeight = 0;
 
$("div").each(function(){
   if ($(this).height() > maxHeight) { maxHeight = $(this).height(); }
});
 
$("div").height(maxHeight);

修復 IE6 PNG 問題

  至今,IE6 在國內仍然佔據了大量的份額,因此在 Web 開發中仍然需要考慮 IE6 的兼容問題。比較常用的 IE6 PNG 圖片問題,下面這段代碼可以方便的修復。

1
2
3
4
5
$('.pngfix').each( function() {
   $(this).attr('writing-mode', 'tb-rl');
   $(this).css('background-image', 'none');
   $(this).css( 'filter', 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="path/to/image.png",sizingMethod="scale")');
});

解析 JSON 字符串

  使用 jQuery 解析 JSON 數據並不複雜。下面是一個高效解析 JSON 數據並將其追加到您的網頁的例子。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
function parseJson(){
    //Start by calling the json object, I will be using a
        //file from my own site for the tutorial
    //Then we declare a callback function to process the data
    $.getJSON('hcj.json',getPosts);
  
    //The process function, I am going to get the title,
        //url and excerpt for 5 latest posts
    function getPosts(data){
        //Start a for loop with a limit of 5
        for(var i = 0; i < 5; i++){
            var strPost = '<h2>'
                      + data.posts[i].title
                      + '</h2>'
                      + '<p>'
                      + data.posts[i].excerpt
                      + '</p>'
                      + '<a href="'
                      + data.posts[i].url
                      + '" title="Read '
                      + data.posts[i].title
                      + '">Read ></a>';
            //Append the body with the string
            $('body').append(strPost);
        }
    }
}
  
//Fire off the function in your document ready
$(document).ready(function(){
    parseJson();                  
});

隔行換色

  這是一個很老的功能了,在大的列表或表格中,隔行顏色可以大大提高內容的可讀性。下面的代碼可以非常簡單實現這個功能。

$('div:odd').css("background-color", "#F4F4F8");
$('div:even').css("background-color", "#EFF1F1");

預加載圖片

  你是否注意到 facebook 相冊的圖片加載速度特別快?那是因爲在你看到這些圖片之前已經預加載到你的瀏覽器緩存中了。下面是實現這個類似功能的代碼示例:

1
2
3
4
5
6
7
8
var nextimage = "/images/some-image.jpg";
$(document).ready(function(){
    window.setTimeout(function(){
        var img = $("<img>").attr("src", nextimage).load(function(){
            //all done
        });
    }, 100);
});

讓整個 Div 可點擊

   這是實現鏈接的父 Div 也能夠點擊的簡單方法,HTML 示例代碼如下:

1
2
3
4
<div class="myBox">
     blah blah blah.
    <a href="http://google.com">link</a>
</div>

  下面的 jQuery 代碼讓整個 Div 可點擊:

1
2
3
4
$(".myBox").click(function(){
     window.location=$(this).find("a").attr("href");
     return false;
});

  

發佈了74 篇原創文章 · 獲贊 43 · 訪問量 24萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章