天猫国际|前端人必看的jQuery技巧,让工作更高效!( 二 )


  • function preloadImg(url) {
  • var img = new Image();
  • img.src = https://mparticle.uc.cn/api/url;
  • if(img.complete) {
  • //接下来可以使用图片了
  • //do something here

  • else {
  • img.onload = function() {
  • //接下来可以使用图片了
  • //do something here
  • ;


2、多图片预加载
很多场景下 , 单图片预加载并不能满足我们的需求 , 因为像动画这种功能通常都会有很多的图片素材 , 在这种情况下 , 我们可以通过下面的代码来实现多图片的预加载 。
  • function preloadImg(listimgs) {
  • var def = $.Deferred()
  • len = list.length;
  • $(list).each(function(ie) {
  • var img = new Image();
  • img.src = https://mparticle.uc.cn/api/e;
  • if(img.complete) {
  • imgs[i
    = img;
  • len--;
  • if(len == 0) {
  • def.resolve();


  • else {
  • img.onload = (function(j) {
  • return function() {
  • imgs[j
    = img
  • len--;
  • if(len == 0) {
  • def.resolve();

  • ;
  • )(i);
  • img.onerror = function() {
  • len--;
  • console.log('fail to load image');
  • ;

  • );
  • return def.promise();

  • var list = [......
        //此处省略一万个字符
  • imgs = [
    ;
  • $.when(preloadImg(list imgs)).done(
  • function() {
  • //预加载结束
  • //do something here

  • );

六、验证元素是否为空
  • $(document).ready(function() {
  • if ($(‘#id‘).html()) {
  • // do something

  • );
七、淡入/滑动切换
滑动和淡入是我们在使用jQuery做动画时经常会用到的东西 。 如果只是想在用户点击之后展示一个元素的话 , 可以用fadeIn 和slideDown 方法就能完美实现 。 如果想要元素在第一次点击的时候出现 , 然后在第二次点击的时候消失的话 , 可以使用下面的代码实现 。
  • Fade $('.btn').click(function () {
  • $('.element').fadeToggle('slow');
  • );
  • Toggle $('.btn').click(function () {
  • $('.element').slideToggle('slow');
  • );
八、重复的函数只定义一次
如果追求代码的更高性能 , 那么在设置事件监听程序时必须要小心 , 只定义一次函数然后把它的名字作为事件处理程序传递是不错的方法 。
  • $(document).ready(function(){
  • function showMenu(){
  • alert('Showing menu!');
  • // Doing something complex here


  •     $('#menuButton').click(showMenu);
  • $('#menuLink').click(showMenu);

  • );
九、在新标签页/窗口打开外部链接
在一个新的浏览器tab或窗口中打开外部链接 , 并确保同一个来源的链接能在同一个tab或者窗口中打开 。
  • $('a[href^=\"http\"
    ').attr('target' '_blank');
  • $('a[href^=\"//\"
    ').attr('target' '_blank');
  • $('a[href^=\"' + window.location.origin +
  • '\"
    ').attr('target' '_self');
十、停止加载链接