转:http://www.cnblogs.com/lhb25/p/10-useful-jquery-code-snippets.html
平滑滚动到锚点
这个功能很常见,在网站底部添加一个让访客快速回到页面顶部的功能,下面是实现这个功能的示例代码:
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 示例代码如下:
<div class="myBox">
blah blah blah.
<a href="http://google.com">link</a>
</div>
下面的 jQuery 代码让整个 Div 可点击:
$(".myBox").click(function(){
window.location=$(this).find("a").attr("href");
return false;
});