前端程序员应该知道的 15 个 jQuery 小技巧

下面这些简单的小技巧能够帮助你玩转jQuery。

  • 返回顶部按钮
  • 预加载图像
  • 检查图像是否加载
  • 自动修复破坏的图像
  • 悬停切换类
  • 禁用输入字段
  • 停止加载链接
  • 切换淡入/幻灯片
  • 简单的手风琴
  • 让两个div高度相同
  • 在新标签页/窗口打开外部链接
  • 通过文本查找元素
  • 在改变Visibility时触发
  • AJAX调用错误处理
  • 链式插件调用

返回顶部按钮

通过使用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‘);

检查图像是否加载

有时为了继续脚本,你可能需要检查图像是否全部加载完毕:

$(‘img‘).load(function () { console.log(‘image load successful‘);
});

你也可以用ID或类替换<img>标签来检查某个特定的图像是否被加载。

自动修复破坏的图像

逐个替换已经破坏的图像链接是非常痛苦的。不过,下面这段简单的代码可以帮助你:

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

即使没有任何断掉的链接,加上这一段代码也不会让你有任何损失。

悬停切换类

假设你希望当用户将鼠标悬停在可点击的元素上时,它会改变颜色。那么你可以在用户悬停的时候添加类到元素中,反之则删除类:

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

你只需要添加必要的CSS即可。更简单的方法是使用toggleClass 方法:

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

注:可能在这种情况下,CSS这种解决方案更快,不过了解这个方法很有必要。

禁用输入字段

有时候,你可能想要禁用表格的提交按钮或它的某一项文字输入直到用户执行了特定操作(例如,勾选“我已阅读相关条款”复选框)。添加 disabled属性到你的输入就可以在你想要的时候才启用它:

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

然后你只需要运行输入的prop 方法就可以了,不过disabled 的值要设置为false:

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

停止加载链接

有时候,你既不需要链接到某个特定的网页,也不想要重新加载页面——你可能希望链接做点别的事情,例如说触发一些其他脚本。这就要在阻止默认动作上做文章了:

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

淡入/滑动切换

滑动和淡入都是我们用jQuery做动画的时候大量运用的东西。如果你只是想在用户点击之后展示一个元素的话,那么用fadeIn 和slideDown 方法就很完美。但是,如果你想要元素在第一次点击的时候出现,然后在第二次点击的时候消失的话,那么可以试试下面的代码:

// 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());

设置 min-height,这意味着它可以比主div大但绝对不能比主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());
});

在新标签页/窗口打开外部链接

在一个新的浏览器tab或窗口中打开外部链接,并确保同一个来源的链接能在同一个tab或者窗口中打开:

$(‘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();

在改变Visibility时触发

当用户不再关注某个tab,或重新聚焦原来的那个tab上时,触发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中可以让代码变得更短和更快的代最佳做法

时间: 2024-12-22 15:04:59

前端程序员应该知道的 15 个 jQuery 小技巧的相关文章

Java程序员应该知道的10个Eclipse调试技巧

Eclipse是众多Java程序员实用的开发工具,其中开发技巧也是繁多,但作为优秀的Java程序员,需要掌握最起码的调试技巧. 小编从前辈程序员和网络中,整理了10个Eclipse调试技巧,希望对Java程序员有用. 1 条件断点 如果你不知道如何添加断点,只需点击左边面板(行号前面)断点即被创建.在调试界面中,“断点”视图会把所有被创建的断点列出来.我们可以给它加一个布尔条件,也就是说,该断点会被激活并且如果布尔条件为真,就会执行该断点,否则将会跳过往下执行. 2 异常断点 在断点视图中,有一

程序员应该知道的15件事 在生活与工作中用他们来警惕自己

http://www.nowamagic.net/librarys/veda/detail/2313作为程序员,要取得非凡成就需要记住的15件事.这些道理也许都很浅显,但是你需要在生活与工作中用他们来警惕自己. 走一条不一样的路.在有利于自己的市场中竞争,如果你满足于“泯然众人矣”,那恐怕就得跟那些低工资国家的程序员们同场竞技了. 了解自己的公司.以我在医院.咨询公司.物流企业以及大技术公司工作的经验来看,这一点所言不虚. 不同公司的运营模式差异极大.如果你理解企业的运营模式,那你就不一样了!在

PHP程序员应该知道的15个库

介绍这些库,不是一定都能用得上,若是当作进阶过程中,阅读一些高质量库的源代码的资源,这些内容还是很不错的,学习设计思想和编码规范,加深内功修炼. 最几年,PHP已经成为最受欢迎的一种有效服务器端编程语言.据2013年发布的一份调查报告显示,PHP语言已经被安装在全球超过2.4亿个网站以及210万台Web服务器之上.PHP代表超文本预处理器,它主要用于创建动态网页.当然,PHP还有许多其他用途,在Web开发人员中具有极高的人气.随着相关技术在各个领域的不断发展,PHP开发人员目前拥有非常旺盛的市场

【转】嵌入式程序员应该知道的16个问题

全面解析<嵌入式程序员应该知道的16个问题> ----Sailor_forever分析整理,[email protected] http://blog.csdn.net/sailor_8318/archive/2008/03/25/2215041.aspx 1.预处理器(Preprocessor) 2.如何定义宏 3.预处理器标识#error的目的是什么? 4.死循环(Infinite loops) 5.数据声明(Data declarations) 6.关键字static的作用是什么? 7.

嵌入式程序员应知道的0x10个C语言Tips

[1].[代码] [C/C++]代码 跳至 [1] ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77

嵌入式程序员应知道的0x10个基本问题

来源:网络 1 . 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL我在这想看到几件事情:1) #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)2)懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的.3) 意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉

(转) Java程序员应该知道的10个调试技巧

原地址:http://www.csdn.net/article/2012-09-03/2809495-java-debugging-tips-with-eclipse 调试可以帮助识别和解决应用程序缺陷,在本文中,作者将使用大家常用的的开发工具Eclipse来调试Java应用程序.但这里介绍的调试方法基本都是通用的,也适用于NetBeans IDE,我们会把重点放在运行时上面. 在开始之前,推荐大家去看看Eclipse shortcuts这篇文章,它将会给你带来很多方便.在本文中使用的是Ecli

PHP开发者该知道的5个Composer小技巧

Composer 是新一代的PHP依赖管理工具.本文介绍使用Composer的五个小技巧,希望能给你的PHP开发带来方便. 1. 仅更新单个库 只想更新某个特定的库,不想更新它的所有依赖,很简单 composer update foo/bar 此外,这个技巧还可以用来解决“警告信息问题”.你一定见过这样的警告信息: Warning: The lock file is not up to date with the latest changes in composer.json, you may

人人必知的10个 jQuery 小技巧

原文地址:http://info.9iphp.com/10-jquery-tips-everyone-should-know/ 人人必知的10个 jQuery 小技巧 收集的10个 jQuery 小技巧/代码片段,可以帮你快速开发. 1. 返回顶部按钮 你可以利用 animate 和 scrollTop 来实现返回顶部的动画,而不需要使用其他插件. // Back to top $('a.top').click(function () { $(document.body).animate({sc