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 相关文章推荐
网页源代码保护(禁止右键、复制、另存为、查看源文件)
May 23 Javascript
jQuery插件jQuery-JSONP开发ajax调用使用注意事项
Nov 22 Javascript
node.js中的console.trace方法使用说明
Dec 09 Javascript
JS给Textarea文本框添加行号的方法
Aug 20 Javascript
JS实现输入框提示文字点击时消失效果
Jul 19 Javascript
BootStrap 可编辑表Table格
Nov 24 Javascript
VUE实现表单元素双向绑定(总结)
Aug 08 Javascript
详解基于vue-cli配置移动端自适应
Jan 13 Javascript
解决iview打包时UglifyJs报错的问题
Mar 07 Javascript
Laravel 如何在blade文件中使用Vue组件的示例代码
Jun 28 Javascript
带你彻底理解JavaScript中的原型对象
Apr 14 Javascript
js中Object.create实例用法详解
Oct 05 Javascript
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字符串 ==比较运算符的副作用
2009/10/21 PHP
Look And Say 序列php实现代码
2011/05/22 PHP
PHP文章采集URL补全函数(FormatUrl)
2012/08/02 PHP
初识ThinkPHP控制器
2016/04/07 PHP
用php实现分页效果的示例代码
2020/12/10 PHP
HTML TO JavaScript 转换
2006/06/26 Javascript
(跨浏览器基础事件/浏览器检测/判断浏览器)经验代码分享
2013/01/24 Javascript
javascript不同类型数据之间的运算的转换方法
2014/02/13 Javascript
node.js中使用q.js实现api的promise化
2014/09/17 Javascript
JavaScript将字符串转换为整数的方法
2015/04/14 Javascript
Javascript实现单例模式
2016/01/24 Javascript
静态页面html中跳转传值的JS处理技巧
2016/06/22 Javascript
js实现功能比较全面的全选和多选
2017/03/02 Javascript
JS鼠标滚动分页效果示例
2017/07/05 Javascript
angularjs通过过滤器返回超链接的方法
2018/10/26 Javascript
js中对象与对象创建方法的各种方法
2019/02/27 Javascript
Vue使用Proxy监听所有接口状态的方法实现
2019/06/07 Javascript
JavaScript中var的重要性实例分析
2019/07/09 Javascript
vue2.x数组劫持原理的实现
2020/04/19 Javascript
基于redis的小程序登录实现方法流程分析
2020/05/25 Javascript
python持久性管理pickle模块详细介绍
2015/02/18 Python
python机器学习理论与实战(四)逻辑回归
2018/01/19 Python
python脚本后台执行方式
2019/12/21 Python
Python爬虫requests库多种用法实例
2020/05/28 Python
浅谈Python 参数与变量
2020/06/20 Python
Python Excel vlookup函数实现过程解析
2020/06/22 Python
Python numpy矩阵处理运算工具用法汇总
2020/07/13 Python
英国最大线上综合鞋类商城:Office
2017/12/08 全球购物
荷兰领先的百货商店:De Bijenkorf
2018/10/17 全球购物
生态学毕业生自荐信
2013/10/27 职场文书
2014年招商引资工作总结
2014/11/22 职场文书
2014年后备干部工作总结
2014/12/08 职场文书
幼师辞职信范文
2015/02/27 职场文书
复制别人的成功真的会成功吗?
2019/10/17 职场文书
golang生成vcf通讯录格式文件详情
2022/03/25 Golang
Python使用socket去实现TCP客户端和TCP服务端
2022/04/12 Python