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 相关文章推荐
JQUERY 对象与DOM对象之两者相互间的转换
Apr 27 Javascript
jquery中ajax学习笔记3
Oct 16 Javascript
JS 打印界面的CSS居中代码适用所有浏览器
Mar 19 Javascript
Javascript使用post方法提交数据实例
Aug 03 Javascript
javascript实现对表格元素进行排序操作
Nov 18 Javascript
Vue.js中数组变动的检测详解
Oct 12 Javascript
微信小程序开发背景图显示功能
Aug 08 Javascript
浅析vue 函数配置项watch及函数 $watch 源码分享
Nov 22 Javascript
关于node-bindings无法在Electron中使用的解决办法
Dec 18 Javascript
浅谈nuxtjs校验登录中间件和混入(mixin)
Nov 06 Javascript
JavaScript实现鼠标经过表格某行时此行变色
Nov 20 Javascript
Vue3实现简易音乐播放器组件
Aug 14 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
php在页面中调用fckeditor编辑器的方法
2011/06/10 PHP
PHP下载生成的csv文件及问题总结
2015/08/06 PHP
phpstudy的php版本自由修改的方法
2017/10/18 PHP
PHP7 字符串处理机制修改
2021/03/09 PHP
用dom+xhtml+css制作的一个相册效果代码打包下载
2008/01/24 Javascript
javascript HTMLEncode HTMLDecode的完整实例(兼容ie和火狐)
2009/06/02 Javascript
怎么判断js脚本加载完成
2014/02/28 Javascript
jquery中each遍历对象和数组示例
2014/08/05 Javascript
js显示文本框提示文字的方法
2015/05/07 Javascript
JS中的THIS和WINDOW.EVENT.SRCELEMENT详解
2015/05/25 Javascript
JS闭包、作用域链、垃圾回收、内存泄露相关知识小结
2016/05/16 Javascript
微信小程序商城项目之购物数量加减(3)
2017/04/17 Javascript
在Koa.js中实现文件上传的接口功能
2019/10/08 Javascript
selenium 反爬虫之跳过淘宝滑块验证功能的实现代码
2020/08/27 Javascript
关于angular引入ng-zorro的问题浅析
2020/09/09 Javascript
在js文件中引入(调用)另一个js文件的三种方法
2020/09/11 Javascript
vue 图片裁剪上传组件的实现
2020/11/12 Javascript
Python3实现生成随机密码的方法
2014/08/23 Python
Python实现破解猜数游戏算法示例
2017/09/25 Python
利用Python-iGraph如何绘制贴吧/微博的好友关系图详解
2017/11/02 Python
解决Python print 输出文本显示 gbk 编码错误问题
2018/07/13 Python
python tkinter界面居中显示的方法
2018/10/11 Python
python抓取京东小米8手机配置信息
2018/11/13 Python
Python3 itchat实现微信定时发送群消息的实例代码
2019/07/12 Python
python处理document文档保留原样式
2019/09/23 Python
python开发实例之Python的Twisted框架中Deferred对象的详细用法与实例
2020/03/19 Python
在keras里面实现计算f1-score的代码
2020/06/15 Python
Quiksilver荷兰官方网站:冲浪和滑雪板
2019/11/16 全球购物
欧舒丹俄罗斯官方网站:L’OCCITANE俄罗斯
2019/11/22 全球购物
先进集体获奖感言
2014/02/13 职场文书
《社戏》教学反思
2014/04/15 职场文书
《春雨》教学反思
2014/04/24 职场文书
会计求职信
2014/05/29 职场文书
简单租房协议书
2014/10/21 职场文书
2014年小学少先队工作总结
2014/12/18 职场文书
廉洁自律心得体会2016
2016/01/13 职场文书