jQuery常用的一些技巧汇总


Posted in Javascript onMarch 26, 2016

引子

jQuery的存在,让学习前端开发的人感到前端越来越容易入门了,用简单的几行代码就可以实现需求,但是,你真的会用jQuery么,当代码运行后无法看到自己预期的效果,是不是觉得jQuery出了问题,其实,问题还是出在了自己会不会用上面。下面列举一些开发中经常遇到的应用实例,发现一下另一个不同的jQuery世界。

回到顶部按钮

利用jQuery里的animate和scrollTop方法,你便不需要使用插件创建简单的滚动到顶部动画。

$('.top').click(function (e) {
 e.preventDefault();
 $('html, body').animate({scrollTop: 0}, 800);
});

通过scrollTop的值来改变你想要滚动到的位置。其实你就是做了:在接下来的800毫秒中让页面滚动,直到它滚动到文档的顶部。

图片预加载

如果你的网页使用了很多隐藏图片文件(例如:鼠标悬停展示的图片),那么图片的预加载是有意义的:

$.preloadImages = function () {
 for (var i = 0; i < arguments.length; i++) {
 $('<img>').attr('src', arguments[i]);
 }
};
$.preloadImages('img/hover-on.png', 'img/hover-off.png');

判断图片是否加载完

有时候你可能需要检查图像是否已经加载完成,以便于可以继续执行相应的js代码:

$('img').load(function () {
 console.log('image load successful');
});

曾经遇到过的使用场景:有些元素需要按图片的实际尺寸来设置其大小,以绝对布置方式放置。元素的大小设置可以在图片加载完成后计算。

自动修补破损图像

如果你碰巧发现在你的网站上发现破损的图像链接,一个个去替代他们是痛苦的。这个简单的代码可以节省很多的麻烦:

$('img').on('error', function () {
 if(!$(this).hasClass('broken-image')) {
 $(this).prop('src', 'img/broken.png').addClass('broken-image');
 }
});

即使你没有任何断开的链接,加入这代码也不会有任何影响。

禁用输入

有时你可能需要用表单的提交按钮或者某个输入框直到用户执行了某个动作(比如:检查“我已阅读条款”复选框)。在你的输入框上设置disabled属性,然后当你需要的时候启用该属性:

$('input[type="submit"]').prop('disabled', true);

你需要做的只是需要在输入框上再次运行prop方法,但设置的被禁用值是false:

$('input[type="submit"]').prop('disabled', false);

对地不了解prop函数的jQuery开发者来说,最常使用的是attr函数,可能开发很多程序都没有发现什么问题,但是,在开发例如checkbox、radio、select时,会发现使用attr无法让属性生效,以为是jQuery的bug,下面来说说attr和prop的使用建议:

在遇到要获取或设置checked,selected,readonly和disabled等属性时,用prop方法显然更好

使两个DIV同等高度

有时你会想要两个DIV有相同的高度,无论他们都有什么内容:

$('.div').css('min-height', $('.main-div').height());

这个例子设置了DIV的最小高度,这意味着它的高度只可以比这个设置的高度大而不能小。然而,一个更灵活的方法是循环的一组元素,并设置将最高元素的高度作为高度:

var $columns = $('.column');
var height = 0;
$columns.each(function () {
 if ($(this).height() > height) {
 height = $(this).height();
 }
});
$columns.height(height);

如果你想要所有的列有相同的高度:

var $rows = $('.same-height-columns');
$rows.each(function () {
 $(this).find('.column').height($(this).height());
});

根据文本获取元素

通过jQuery中的contains()选择器,你能找到一个元素内的文本内容。如果文本不存在,则这个元素将被隐藏:

var search = $('#search').val();
$('div:not(:contains("' + search + '"))').hide();

可见变化的触发

当用户不再聚焦或者重新聚焦一个标签时触发javascript脚本:

$(document).on('visibilitychange', function (e) {
 if (e.target.visibilityState === "visible") {
 console.log('Tab is now in view!');
 } else if (e.target.visibilityState === "hidden") {
 console.log('Tab is now hidden!');
 }
});
Javascript 相关文章推荐
关于js内存泄露的一个好例子
Dec 09 Javascript
探究JavaScript函数式编程的乐趣
Dec 14 Javascript
理解javascript中的with关键字
Feb 15 Javascript
JS实现页面数据无限加载
Sep 13 Javascript
json定义及jquery操作json的方法
Sep 29 Javascript
ES6中module模块化开发实例浅析
Apr 06 Javascript
vue之数据交互实例代码
Jun 20 Javascript
vuejs实现递归树型菜单组件
Jan 13 Javascript
使用js实现将后台传入的json数据放在前台显示
Aug 06 Javascript
vue、react等单页面项目部署到服务器的方法及vue和react的区别
Sep 29 Javascript
使用vue 国际化i18n 实现多实现语言切换功能
Oct 11 Javascript
vue 导航守卫和axios拦截器有哪些区别
Dec 19 Vue.js
javascript拖拽应用实例(二)
Mar 25 #Javascript
几种经典排序算法的JS实现方法
Mar 25 #Javascript
javascript拖拽应用实例
Mar 25 #Javascript
JavaScript学习笔记之创建对象
Mar 25 #Javascript
JS实现的颜色实时渐变效果完整实例
Mar 25 #Javascript
JavaScript学习笔记之ES6数组方法
Mar 25 #Javascript
JS实现点击登录弹出窗口同时背景色渐变动画效果
Mar 25 #Javascript
You might like
PHP5.3.1 不再支持ISAPI
2010/01/08 PHP
PHP连接MySQL数据的操作要点
2015/03/20 PHP
PHP生成随机字符串实例代码(字母+数字)
2019/09/11 PHP
网页的标准,IMG不支持onload标签怎么办
2006/06/29 Javascript
js实现的网页颜色代码表全集
2007/07/17 Javascript
JavaScript CSS菜单功能 改进版
2008/12/20 Javascript
基于jquery的返回顶部效果(兼容IE6)
2011/01/17 Javascript
jWiard 基于JQuery的强大的向导控件介绍
2011/10/28 Javascript
早该知道的7个JavaScript技巧
2013/03/27 Javascript
jQuery实现简单的间隔向上滚动效果
2015/03/09 Javascript
js实现简单的左右两边固定广告效果实例
2015/04/10 Javascript
教你用javascript实现随机标签云效果_附代码
2016/03/16 Javascript
浅析C/C++,Java,PHP,JavaScript,Json数组、对象赋值时最后一个元素后面是否可以带逗号
2016/03/22 Javascript
两行代码轻松搞定JavaScript日期验证
2016/08/03 Javascript
vue-cli3.0使用及部分配置详解
2018/08/29 Javascript
JavaScript中的一些实用小技巧总结
2019/04/07 Javascript
微信小程序中data-key属性之数据传输(经验总结)
2020/08/22 Javascript
在Python中使用base64模块处理字符编码的教程
2015/04/28 Python
详解python实现识别手写MNIST数字集的程序
2018/08/03 Python
Python 一键制作微信好友图片墙的方法
2019/05/16 Python
pyqt5 键盘监听按下enter 就登陆的实例
2019/06/25 Python
python绘制规则网络图形实例
2019/12/09 Python
纯CSS3实现给头像加个光芒四射且旋转的背景动画效果
2014/05/07 HTML / CSS
初三物理教学反思
2014/01/21 职场文书
上课睡觉检讨书
2014/01/28 职场文书
2014年最新学习全国两会精神心得
2014/03/17 职场文书
互联网创业计划书写作技巧攻略
2014/03/23 职场文书
小学美术兴趣小组活动总结
2014/07/07 职场文书
教师党员个人整改措施材料
2014/09/16 职场文书
党员查摆剖析材料
2014/10/10 职场文书
个人自查自纠材料
2014/10/14 职场文书
二审答辩状格式
2015/05/22 职场文书
上帝也疯狂观后感
2015/06/09 职场文书
红领巾广播站广播稿
2015/08/19 职场文书
高考要来啦!用Python爬取历年高考数据并分析
2021/06/03 Python
用python基于appium模块开发一个自动收取能量的小助手
2021/09/25 Python