jQuery常用功能小技巧

原文地址:http://www.cnblogs.com/whitewolf/p/4982425.html

  • 回到顶部
    利用jQuery里的animate和scrollTop方法,创建简单的滚动到顶部动画。
    通过scrollTop的值来改变想要滚动到的位置。
<a class="top" href="#">回到顶部</a>
$('.top').click(function (e) {
    e.preventDefault();
    $('html, body').animate({scrollTop: 0}, 800); //在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');
});
// 检查特定图片是否加载完成使用带有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');
});
  • 禁用输入
    有时需要禁用表单的提交按钮或者某个输入框直到用户执行了某个动作(如:检查“我已阅读条款”复选框)。
// 在输入框上设置disabled属性,当需要的时候启用该属性:
$('input[type="submit"]').prop('disabled', true);
// 启用设置:
$('input[type="submit"]').prop('disabled', false);
  • 停止正在加载的链接
    当不想链接到特定的网页或者重新载入页面或做一些其他的事情,如触发一些其他的脚本。这是防止违约行动的技巧。
$('a.no-link').click(function (e) {
    e.preventDefault();
});
  • toggle fade/slide
    滑动和淡入淡出 仅想在用户做某些点击事件的时候显示一个元素,这时候需要淡入淡出或者滑动方法,但是如果需要某个元素在第一次点击的时候出现,第二次点击的时候消失,代码如下:
// 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;
});
  • 使两个div同等高度
// 两个div具有相同高度,以最小高度为底
$('.div').css('min-height', $('.main-div').height());
// 以最大高度为限
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());
});
  • 在浏览器标签/新窗口打开外部链接
    在新的浏览器标签或窗口中打开外部链接,并确保在同一个标签或窗口中打开的是同一个源的链接:
    备注: window.location.origin 在IE10不工作
$('a[href^="http"]').attr('target', '_blank');
$('a[href^="//"]').attr('target', '_blank');
$('a[href^="' + window.location.origin + '"]').attr('target', '_self');
  • 根据文本获取元素
    通过jQuery中的contains()选择器,找到一个元素内的文本内容;如果文本不存在,则这个元素将被隐藏
var search = $('#search').val();
$('div:not(:contains("' + search + '"))').hide();
  • 可见变化的触发
    当用户不再聚焦或者重新聚焦一个标签时触发js脚本:
$(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!');
      }
});
  • 链式操作
    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缓存方法是最好的做法,更短、更快的代码。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335

推荐阅读更多精彩内容

  • 1. tab列表折叠效果 html: 能源系统事业部 岗位名称: 工作地点 岗位名...
    lilyping阅读 1,797评论 0 1
  • 本文主要汇总自己收集与总结的一些jquery代码片段与心得体会,与大家分享,如果有错误,请轻拍砖~ 返回顶部按钮/...
    爱做梦的鱼阅读 1,486评论 1 5
  • jQuery基础 什么是JQ?一个优秀的JS库,大型开发必备JQ的好处?一简化JS的复杂操作二不再需要关心兼容性三...
    幺七阅读 928评论 0 2
  • 1.JQuery 基础 改变web开发人员创造搞交互性界面的方式。设计者无需花费时间纠缠JS复杂的高级特性。 1....
    LaBaby_阅读 1,314评论 0 2
  • 1.JQuery 基础 改变web开发人员创造搞交互性界面的方式。设计者无需花费时间纠缠JS复杂的高级特性。 1....
    LaBaby_阅读 1,145评论 0 1