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 相关文章推荐
javascript延时重复执行函数 lLoopRun.js
Jun 29 Javascript
告诉大家什么是JSON
Jun 10 Javascript
javascript 解析url的search方法
Feb 09 Javascript
Jquery判断$(&quot;#id&quot;)获取的对象是否存在的方法
Sep 25 Javascript
js实现的标题栏新消息闪烁提示效果
Jun 06 Javascript
JQuery实现动态适时改变字体颜色的方法
Mar 10 Javascript
JS插件overlib用法实例详解
Dec 26 Javascript
jQuery模拟360浏览器切屏效果幻灯片(附demo源码下载)
Jan 29 Javascript
[原创]jQuery常用的4种加载方式分析
Jul 25 Javascript
vue-router相关基础知识及工作原理
Mar 16 Javascript
微信小程序实现上传图片裁剪图片过程解析
Aug 22 Javascript
JavaScript RegExp 对象用法详解
Sep 24 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
ThinkPHP中数据操作案例分析
2015/09/27 PHP
php防止表单重复提交实例讲解
2019/02/11 PHP
PHP生成zip压缩包的常用方法示例
2019/08/22 PHP
使用indexOf等在JavaScript的数组中进行元素查找和替换
2013/09/18 Javascript
jQuery实现列表的全选功能
2015/03/18 Javascript
Jquery简单分页实现方法
2015/07/24 Javascript
jQuery实现带延迟效果的滑动菜单代码
2015/09/02 Javascript
fullpage.js全屏滚动插件使用实例
2016/09/06 Javascript
js实现弹窗暗层效果
2017/01/16 Javascript
原生JS实现导航下拉菜单效果
2020/11/25 Javascript
vue-cli构建项目使用 less的方法
2017/10/04 Javascript
Vue列表渲染的示例代码
2018/11/01 Javascript
150行Node.js实现的dns代理工具
2019/08/02 Javascript
微信小程序云开发获取文件夹下所有文件(推荐)
2019/11/14 Javascript
python BeautifulSoup使用方法详解
2013/11/21 Python
浅谈python str.format与制表符\t关于中文对齐的细节问题
2019/01/14 Python
解决.ui文件生成的.py文件运行不出现界面的方法
2019/06/19 Python
Python正则表达式匹配日期与时间的方法
2019/07/07 Python
python爬虫 execjs安装配置及使用
2019/07/30 Python
python实现多进程按序号批量修改文件名的方法示例
2019/12/30 Python
python传到前端的数据,双引号被转义的问题
2020/04/03 Python
Python爬取股票信息,并可视化数据的示例
2020/09/26 Python
定义css设备类型-Media Queries图表简介及使用方法
2013/01/21 HTML / CSS
CSS3中的弹性布局em运用入门详解 1em等于多少像素
2021/02/08 HTML / CSS
德国内衣、泳装和睡衣网上商店:Bigsize Dessous
2018/07/09 全球购物
ECCO英国官网:丹麦鞋履品牌
2019/09/03 全球购物
乌克兰在线药房:Аптека24
2019/10/30 全球购物
小学生春游活动方案
2014/08/20 职场文书
旷课检讨书范文
2014/10/30 职场文书
2015关爱留守儿童工作总结
2014/12/12 职场文书
优秀教研组申报材料
2014/12/26 职场文书
物业工程部主管岗位职责
2015/04/16 职场文书
晚会主持人开场白台词
2015/05/28 职场文书
男方家长婚礼致辞
2015/07/27 职场文书
2016年教代会开幕词
2016/03/04 职场文书
豆瓣2021评分最高动画剧集-豆瓣评分最高的动画剧集2021
2022/03/18 日漫