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,超强推荐expand.js
Dec 23 Javascript
jquery 文本上下无缝滚动,鼠标放上去就停止 小例子
Jun 05 Javascript
Javascript表格翻页效果的具体实现
Oct 05 Javascript
一个奇葩的最短的 IE 版本判断JS脚本
May 28 Javascript
编写简单的jQuery提示插件
Dec 21 Javascript
JS Canvas定时器模拟动态加载动画
Sep 17 Javascript
基于jQuery实现咖啡订单管理简单应用
Feb 10 Javascript
利用PM2部署node.js项目的方法教程
May 10 Javascript
jquery获取select选中值的文本,并赋值给另一个输入框的方法
Aug 21 jQuery
node.js实现带进度条的多文件上传
Mar 27 Javascript
Vue-cli3生成的Vue项目加载Mxgraph方法示例
May 31 Javascript
Javascript使用integrity属性进行安全验证
Nov 07 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多维数组指定多字段排序的示例代码
2018/05/16 PHP
JavaScript XML和string相互转化实现代码
2011/07/04 Javascript
js几秒以后倒计时跳转示例
2013/12/26 Javascript
Js判断CSS文件加载完毕的具体实现
2014/01/17 Javascript
Jquery实现自定义窗口随意的拖拽
2014/03/12 Javascript
选择复选框按钮置灰否则按钮可用
2014/05/22 Javascript
JavaScript设计模式经典之工厂模式
2016/02/24 Javascript
基于Jquery和html5实现炫酷的3D焦点图动画
2016/03/02 Javascript
基于javascript实现九九乘法表
2016/03/27 Javascript
js 判断各种数据类型的简单方法(推荐)
2016/08/29 Javascript
angular和BootStrap3实现购物车功能
2017/01/25 Javascript
jquery代码规范让代码越来越好看
2017/02/03 Javascript
Vue中$refs的用法详解
2018/06/24 Javascript
nodejs使用node-xlsx生成excel的方法示例
2019/08/22 NodeJs
详解JS函数防抖
2020/06/05 Javascript
Python安装Imaging报错:The _imaging C module is not installed问题解决方法
2014/08/22 Python
python 回调函数和回调方法的实现分析
2016/03/23 Python
Python实现注册登录系统
2017/08/08 Python
python实现决策树
2017/12/21 Python
Python编程实现的简单神经网络算法示例
2018/01/26 Python
Python3+selenium实现cookie免密登录的示例代码
2020/03/18 Python
Windows下Anaconda安装、换源与更新的方法
2020/04/17 Python
利用django创建一个简易的博客网站的示例
2020/09/29 Python
html5的canvas实现3d雪花飘舞效果
2013/12/27 HTML / CSS
利用HTML5实现使用按钮控制背景音乐开关
2015/09/21 HTML / CSS
NEW LOOK官网:英国时装零售巨头之一,快时尚品牌
2017/01/11 全球购物
马来西亚最热门的在线时尚商店:FashionValet
2018/11/11 全球购物
Diesel美国网上商店:意大利牛仔时装品牌
2020/12/10 全球购物
大学本科毕业生的自我鉴定
2013/11/26 职场文书
买卖合同协议书范本
2014/10/18 职场文书
个人德育工作总结
2015/03/05 职场文书
广播体操比赛主持词
2015/06/29 职场文书
2015暑假社会调查报告
2015/07/13 职场文书
React-vscode使用jsx语法的问题及解决方法
2021/06/21 Javascript
通过Python把学姐照片做成拼图游戏
2022/02/15 Python
python井字棋游戏实现人机对战
2022/04/28 Python