代码之家  ›  专栏  ›  技术社区  ›  yoda

jQuery$.get加载

  •  0
  • yoda  · 技术社区  · 14 年前

    我正在使用jQuery$.get方法将页面加载到 facebox plugin ,但是插件总是在打开页面时有点滞后。有没有办法避免这种延迟,只在内容准备好时才显示它们?

    http://aeon-dev.org/edit-in-place/

    干杯!

    2 回复  |  直到 14 年前
        1
  •  2
  •   Nick Craver    14 年前

    您当前的呼叫有一个额外的facebox包装器来执行以下操作:

    $.facebox(function(jQuery) { 
      $.get('aeon_ce/dialogs/img.php', function(data) {
        $.facebox(data, o);
        img = new ace_img(o);
        $('#aeon_ce_img_title').attr('value', img.title);
        $('#aeon_ce_img_alt').attr('value', img.alt);
        $('#aeon_ce_img_src').attr('value', img.src);
        $('#aeon_ce_img_width').attr('value', img.width);
        $('#aeon_ce_img_height').attr('value', img.height);
      });
    });
    

    把它去掉,只使用 $.get() dblclick 处理程序(和使用) .val()

    $('img').live('dblclick', function(e) {
      e.preventDefault();
      o = this;
      $.get('aeon_ce/dialogs/img.php', function(data) { 
        $.facebox(data, o);
        img = new ace_img(o);
        $('#aeon_ce_img_title').val(img.title);
        $('#aeon_ce_img_alt').val(img.alt);
        $('#aeon_ce_img_src').val(img.src);
        $('#aeon_ce_img_width').val(img.width);
        $('#aeon_ce_img_height').val(img.height);
      });
    });
    

    这样就不会执行任何操作,显示一个facebox,直到回调运行…一旦你有了数据。作为旁注,我注意到 /facebox/loading.gif /facebox/closelabel.gif 丢失,导致每次打开时都会出现一些404,修复此问题将消除它导致的轻微延迟:)

        2
  •  0
  •   Peter Anselmo    14 年前

    你在其他地方注意到了吗?一个原因可能是这个例子需要优化;你正在用css将200k图像缩小到缩略图!当然装得很慢!