(译)你应该知道的jQuery技巧

帮助提高你jQuery应用的简单小技巧。

  1. 回到顶部按钮
  2. 图片预加载
  3. 判断图片是否加载完
  4. 自动修补破损图像
  5. Hover切换class类
  6. 禁用输入
  7. 停止正在加载的链接
  8. toggle fade/slide
  9. 简单的手风琴
  10. 使两个DIV同等高度
  11. 在浏览器标签/新窗口打开外部链接
  12. 根据文本获取元素
  13. 可见变化的触发
  14. Ajax调用错误处理
  15. 链式操作

回到顶部按钮

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

// Back to top
$('.top').click(function (e) {e.preventDefault();$('html, body').animate({scrollTop: 0}, 800);
});
<!-- Create an anchor tag -->
<a class="top" href="#">Back to top</a>

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

备注:来看一些scrollTop的调皮行为 。

图片预加载

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

$.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');
});

你还可以检查一个特定的图片是否加载完并且被带有Id或者class的<img>标签代替。

自动修补破损图像

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

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

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

Hover切换class类

比方说,当用户将鼠标悬停在你页面上的元素时,你想改变其视觉效果。当用户鼠标悬停在元素上,你可以在该元素上添加一个class类,当鼠标停止悬停事件时移除此class类:

$('.btn').hover(function () {$(this).addClass('hover');
}, function () {$(this).removeClass('hover');
});

如果你想要一个更简单的方式使用toggleClass方法,则仅仅需要添加必要的CSS:

$('.btn').hover(function () {$(this).toggleClass('hover');
});

备注:CSS在这种情况下使用是一个快速的解决方案,但要知道这点知识依旧是值得去了解下的。

禁用输入

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

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

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

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

停止正在加载的链接

有时你不想链接到特定的网页或者重新载入页面;你可能想让他们做一些其他事情,如触发一些其他的脚本。这是防止违约行动的技巧:

$('a.no-link').click(function (e) {e.preventDefault();
});

toggle fade/slide

滑动和淡入/淡出 是我们在jQuery中经常大量使用的动画。你可能仅仅想在用户做某些点击事件的时候显示一个元素,这时候需要淡入/淡出或者滑动方法。但是如果你需要那个元素在你第一次点击的时候出现,在第二次点击的时候消失,代码如下:

// Fade
$('.btn').click(function () {$('.element').fadeToggle('slow');
});// Toggle
$('.btn').click(function () {$('.element').slideToggle('slow');
});

简单的手风琴

这是个简单快速的方法创建一个手风琴:

// Close all panels
$('#accordion').find('.content').hide();// Accordion
$('#accordion').find('.accordion-header').click(function () {var next = $(this).next();next.slideToggle('fast');$('.content').not(next).slideUp('fast');return false;
});

通过添加这个脚本,你需要做的则是必要的HTML操作在你的页面上。

使两个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());
});

在浏览器标签/新窗口打开外部链接

在新的浏览器标签或窗口中打开外部链接,并确保在同一个标签或窗口中打开的是同一个源的链接:

$('a[href^="http"]').attr('target', '_blank');
$('a[href^="//"]').attr('target', '_blank');
$('a[href^="' + window.location.origin + '"]').attr('target', '_self');

备注:window.location.origin 在IE10不工作。

根据文本获取元素

通过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!');}
});

Ajax调用错误处理

当一个Ajax调用返回一个404或500的错误时,将执行该错误处理。如果该处理未定义,则其他jQuery代码便可能不会执行了。定义一个全局Ajax错误处理程序:

$(document).ajaxError(function (e, xhr, settings, error) {console.log(error);
});

链式操作

jQuery允许通过链式操作来减轻反复查询DOM和创建多个jQuery对象的过程。比如下面是你的方法调用:

$('#elem').show();
$('#elem').html('bla');
$('#elem').otherStuff();

这代码可以通过链式大大的提高:

$('#elem').show().html('bla').otherStuff();

另一个方法是在一个可变的元素缓存($作为前置):

var $elem = $('#elem');
$elem.hide();
$elem.html('bla');
$elem.otherStuff();

链式和jQuery缓存方法是最好的做法,导致更短、更快的代码。

翻译:野兽

英文原文地址:https://github.com/AllThingsSmitty/jquery-tips-everyone-should-know。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/439167.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DNS的A、CNAME、MX、NS、TXT、SPF记录

前言 最近工作过程中需要设定邮件服务器&#xff0c;其中涉及到dns服务器的设定。 整理并且记录自己的理解。 种类 A、CNAME、MX、NS、TXT、SPF 下面挨个介绍一下。 A记录/AAAA记录 IPv4&#xff1a; 示例&#xff1a;ns1.exmaple.com. IN A 198.51.100.2解释&#xff1a…

【转】新思想、新技术、新架构——更好更快的开发现代ASP.NET应用程序(续1)

上周星期天开通了博客并发布了第一篇文章《新思想、新技术、新架构——更好更快的开发现代ASP.NET应用程序》&#xff0c;汇集了一些比较流行的技术和开源项目&#xff0c;也把自己的程序架构、部分代码风格、前端表现简单做了一些展示&#xff0c;引起了近100位朋友的评论。特…

CCNA-Cisco-Packet-Tracerchs(思科官网)安装教程以及使用

Cisco-Packet-Tracerchs 思科官网模拟器&#xff0c;各大高校与中职都在使用。 但是由于支持的命令不太多&#xff0c;适用于NA阶段以及入门阶段的人群使用。 以下是免费百度网盘链接&#xff1a; https://pan.baidu.com/s/136fsYRnAfzGoj0DsQFaYTg 提取码: qa4e 复制这段内容…

CCNA-VLAN讲解与交换机三种端口模式(Acess,Trunk,Hybrid)小白入门级

VLAN讲解与三种端口模式(Acess,Trunk,Hybrid) TAG:所有文章均为原创&#xff0c;可以转载但请声明&#xff0c;是在学校里面做的&#xff0c;使用不了EVE和ENSP&#xff0c;请各路大神嘴下留情&#xff0c;如文章内容有误导请及时联系博主----来自一个17岁的中专生。 1.什么是V…

【转】2015-新思想、新技术、新架构——更好更快的开发现代ASP.NET应用程序

在博客园学习很长时间了&#xff0c;今天终于自己也开通了博客&#xff0c;准备分享一些感悟和经验。首先感谢博客园园主提供了这么好的程序员学习交流平台&#xff0c;也非常感谢张善友、dax.net、netfocus、司徒正美 等技术大牛的无私分享&#xff0c;从他们身上学到了很多。…

工作篇-佛山三水恒大-2020.10.23

** 工作篇-佛山三水恒大-2020.10.23 **人生第一次工作啊啊啊啊啊 其实按道理来说&#xff0c;第一次应该会很很紧张吧&#xff0c;不过我倒没有。 也不知道是我不怕还是什么&#xff0c;一切进行的挺顺利的。 前言&#xff1a;讲真那句&#xff0c;第一次做的话&#xff0c;…

UWP 使用OneDrive云存储2.x api(一)【全网首发】

最近开发人脸识别UWP【微识别 / WeRecognition】用到了OneDrive开发&#xff0c;下面把来龙去脉讲一下。 下载地址 https://www.microsoft.com/store/productId/9PDSNS7X9ST9&#xff0c;商店火爆热销中。。。。。。 由于UWP是跨平台的&#xff0c;一套代码可以运行在所有Wind…

CCNA-第一篇-基础入门概念

** 基础入门概念 **前言 没有什么学习是简单的.任何东西,包括你打游戏(除非是弱智的单机游戏)搞IT,一个月熬熬夜 月薪过X-W的大有人在,早9晚5一个月3K,自己选择.所以看你怎么学,每个人都很忙的,时间都是挤出来的. 一.网络基本概念入门 网络设备调试最基本的概念网络环境设计设…

UWP 使用OneDrive云存储2.x api(二)【全网首发】

上一篇提到为了给用户打造一个完全无缝衔接的最佳体验&#xff0c;UWP开发者最好也要实现App设置和数据的跨平台 分析了数据漫游和OneDrive的优缺点&#xff0c;结合自己App实际需要&#xff0c;我选择了OneDrive。 毕竟数据漫游100KB不够用啊。。。 这一次给大家我千辛万苦找…

CCNA-第二篇-路由器交换机概述

CCNA-第二篇-路由器交换机概述 为什么交换机可以转发&#xff1f; 1.使用MAC地址表 2.MAC地址表怎么来的呢&#xff1f;交换机自动学习 问题来了&#xff1a;PC是如何知道对端的MAC地址的呢&#xff1f; 我们在通信的到时候&#xff0c;不可能问你MAC多少吧&#xff0c;一般都是…

sharepoint当流程流转到某个节点对文档进行水印操作

sharepoint在流程中给文档库中的word或者pdf添加水印。 断断续续的搞了很久。总的解决方案如下&#xff1a; 在流程中&#xff0c;当运行到某步的时候&#xff0c;通过自定义代码调用后台方法&#xff0c;进行相关操作。 针对word的水印操作&#xff1a; 这里就不多说了网上有很…

CCNA-第三篇-OSI模型-上

CCNA-第三篇-OSI模型-上 OSI七层模型-上 第七层 应用层 第六层 表示层 第五层 会话层 第四层 传输层定义数据发送方式 TCP UDP 第三层 网络层ICMP协议,网络设备 第二层 数据链路层交换机 -可以实现定向数据转发(依靠MAC表,自动学习) -如何自动学习:当接口收到数据后,自动记录,记…

在Sharepoint 2010中使用ReportViewer控件展示RDLC报表

微软的Visual studio提供了ReportViewer控件以及RDLC报表设计工具。下文主要介绍如何在Sharepoint 2010项目开发中使用ReportViewer和RDLC生成项目报表。由于Sharepoint 2010默认是禁用Session的&#xff0c;而RDLC报表必须启用Session。因此在Sharepoint的站点中要使用RDLC生成…

CCNA-第四篇-OSI模型-下

CCNA-第四篇-OSI模型-下 这里先来说一下上一期的问题 来一个小问题 当你访问百度的时候,你的最初的目的MAC是谁? 1.二层交换机(接入) 2.出口设备GW(路由器) 3.运营商 TAG:这是个ARP的问题,答案会在下一篇讲解. 答案:答案是在GW设备上的那个接口的MAC,为什么呢?或许有人会问…

RDLC报表下载的权限问题

RDLC作的报表发布后&#xff0c;管理员用户可以正常地将报表以PDF、Excel、Word等格式下载&#xff0c;但是其他用户只能以PDF格式下载&#xff0c;其他两种格式下载的文件都是0字节无内容。 需要在SharePoint前端服务器上进行下列设置&#xff1a; 确定Web Application pool …

工作篇-佛山三水恒大-2020.11.13

** 工作篇-佛山三水恒大-2020.11.14 **TAG:此篇文章估计会很长,因为工作的时候变数太多了,预计五千字左右,想看的可以耐心看完,均为个人实战经验.害,其实是上学期间请假去做的,还挨批了. **到了现场tm的那个机房,小到我哭,站都没地方站,刚装修好全tm都是白灰,我穿的一身黑衣…

Windows Workflow Foundation(WWF)介绍

Windows Workflow Foundation&#xff1a;支持基于工作流的应用程序 工作流是一个简单思路&#xff1a;按照特定顺序执行的一系列步骤。您甚至可以认为每个应用程序都在执行工作流&#xff0c;因为每个应用程序都执行某些过程。但是&#xff0c;在使用 C#、Visual Basic 或其他…

CCNA-第五篇-基础命令集+设备升级+设备破解密码+IP地址{精髓篇}

** CCNA-第五篇-基础命令集 ** 1.基础命令集 思科设备 : IOS 华为设备: VRP 启动步骤&#xff1a;加电自检-加载系统(IOS/VRP&#xff09;-运行配置&#xff08;保留的cfg或者conf文件&#xff09; 命令行统一称为CLI,CLI是啥呢,命令 简介&#xff1a;CLI一般指命令行界面。…

你还记得windows workflow foundation吗

很多年前&#xff0c;windows workflow foundation还叫WWF&#xff0c;而直译过来的名称让很多人以为它就是用来开发工作流或者干脆就是审批流的。 博主当年还是个懵懂的少年&#xff0c;却也知道微软不会大力推一个面向如此具象的业务场景的技术&#xff0c;于是特地找了一本…

网线讲解大全

** 网线讲解大全 ** 我们日常使用在网线先分为两类 一.屏蔽双绞线&#xff08;STP) 二.非屏蔽双绞线 &#xff08;UTP) 屏蔽和非屏蔽区别在哪呢&#xff1f; 屏蔽线的外面那层塑料里面有一层金属&#xff0c;可以防止信息被窃听&#xff0c;同时传输的速度比非屏蔽类的线速度…