非常实用的12个jquery代码片段


Posted in Javascript onNovember 02, 2015

jQuery里提供了许多创建交互式网站的方法,在开发Web项目时,开发人员应该好好利用jQuery代码,它们不仅能给网站带来各种动画、特效,还会提高网站的用户体验。

本文收集了12段非常实用的jQuery代码片段,你可以直接复制黏贴到代码里,但请开发者注意了,要理解代码再使用哦。下面就让我们一起来享受jQuery代码的魅力之处吧。

1. 导航菜单背景切换效果

在项目的前端页面里,相对于其它的导航菜单,激活的导航菜单需要设置不同的背景。这种效果实现的方式有很多种,下面是使用JQuery实现的一种方式:

<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选择器获取到的页面元素对象,这个怎么实现呢?看下面代码:

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

3.访问IFrame里的元素

在大多数情况下,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);
});

以上内容是小编给大家分享的非常实用的12个jquery代码片段,有需要的朋友可以直接拿去使用了。

Javascript 相关文章推荐
多个表单中如何获得这个文件上传的网址实现js代码
Mar 25 Javascript
jquery 定位input元素的几种方法小结
Jul 28 Javascript
显示今天的日期js代码(阳历和农历)
Sep 30 Javascript
JS实现页面超时后自动跳转到登陆页面
Jan 19 Javascript
JavaScript中的DSL元编程介绍
Mar 15 Javascript
javascript实现tab切换特效
Nov 12 Javascript
angularJS 发起$http.post和$http.get请求的实现方法
May 18 Javascript
Vue2.0基于vue-cli+webpack同级组件之间的通信教程(推荐)
Sep 14 Javascript
使用Vue.js和Flask来构建一个单页的App的示例
Mar 21 Javascript
Bootstrap-table自定义可编辑每页显示记录数
Sep 07 Javascript
Vuex实现简单购物车
Jan 10 Vue.js
Vue过滤器,生命周期函数和vue-resource简单介绍
Jan 12 Vue.js
jQuery+CSS3折叠卡片式下拉列表框实现效果
Nov 02 #Javascript
jquery 表单验证之通过 class验证表单不为空
Nov 02 #Javascript
纯javascript移动优先的幻灯片效果
Nov 02 #Javascript
JS实现点击按钮获取页面高度的方法
Nov 02 #Javascript
基于jQuery实现自动轮播旋转木马特效
Nov 02 #Javascript
详解jQuery向动态生成的内容添加事件响应jQuery live()方法
Nov 02 #Javascript
jquery实现网页的页面平滑滚动效果代码
Nov 02 #Javascript
You might like
PHP 杂谈《重构-改善既有代码的设计》之三 重新组织数据
2012/04/09 PHP
php中require和require_once的区别说明
2014/02/27 PHP
PHP生成随机密码方法汇总
2015/08/27 PHP
php使用CURL模拟GET与POST向微信接口提交及获取数据的方法
2016/09/23 PHP
使用tp框架和SQL语句查询数据表中的某字段包含某值
2019/10/18 PHP
网页前台通过js非法字符过滤代码(骂人的话等等)
2010/05/26 Javascript
根据json字符串生成Html的一种方式
2013/01/09 Javascript
js动态控制table的tr、td增加及删除的具体实现
2014/04/30 Javascript
node.js实现BigPipe详解
2014/12/05 Javascript
js+html5实现canvas绘制镂空字体文本的方法
2015/06/05 Javascript
js模仿php中strtotime()与date()函数实现方法
2015/08/11 Javascript
原生js页面滚动延迟加载图片
2015/12/20 Javascript
JS中dom0级事件和dom2级事件的区别介绍
2016/05/05 Javascript
浅谈Angularjs link和compile的使用区别
2016/10/21 Javascript
Node.js  事件循环详解及实例
2017/08/06 Javascript
React-Native之定时器Timer的实现代码
2017/10/04 Javascript
十分钟带你快速了解React16新特性
2017/11/10 Javascript
JS+HTML实现的圆形可点击区域示例【3种方法】
2018/08/01 Javascript
jQuery实现点击旋转,再点击恢复初始状态动画效果示例
2018/12/11 jQuery
微信公众号网页分享功能开发的示例代码
2020/05/27 Javascript
javascript如何使用函数random来实现课堂随机点名方法详解
2020/07/28 Javascript
如何编写一个 Webpack Loader的实现
2020/10/18 Javascript
[55:35]DOTA2-DPC中国联赛 正赛 CDEC vs Dragon BO3 第二场 1月22日
2021/03/11 DOTA
零基础写python爬虫之使用urllib2组件抓取网页内容
2014/11/04 Python
python获取当前用户的主目录路径方法(推荐)
2017/01/12 Python
详解Python 序列化Serialize 和 反序列化Deserialize
2017/08/20 Python
对python中的logger模块全面讲解
2018/04/28 Python
Sanic框架Cookies操作示例
2018/07/17 Python
python加密解密库cryptography使用openSSL生成的密匙加密解密
2020/02/11 Python
pyqt5实现井字棋的示例代码
2020/12/07 Python
世界上最大的糖果店:Dylan’s Candy Bar
2017/11/07 全球购物
HTC VIVE美国官网:VR虚拟现实眼镜
2018/02/13 全球购物
总经理办公室主任岗位职责
2013/11/12 职场文书
2014年店长工作总结
2014/11/17 职场文书
夫妻分居协议书范文
2014/11/26 职场文书
校运会加油稿大全
2015/07/22 职场文书