【问题标题】:Resizing Images In Jquery Soon After Adding To The DOM?添加到 DOM 后不久在 Jquery 中调整图像大小?
【发布时间】:2011-07-04 17:23:19
【问题描述】:

我正在做这样的事情:

maxDim = 100;
$('div.images').html('<img class="pull" src="'+imgs[img_i]+'" />');
$('img.pull').each(function(i){
  if( $(this).height() > $(this).width() ){
    var h = maxDim;
    var w = Math.ceil( $(this).width() / $(this).height() * maxDim);
  }
  else{
    var w = maxDim;
    var h = Math.ceil( $(this).height() / $(this).width() * maxDim);
  }
  $(this).css({height:h, width:w});
});

现在我很确定图像大小调整部分很好......尤其是因为它与这个答案匹配 http://adeelejaz.com/blog/resize-images-on-fly-using-jquery/

有时有效,有时无效的问题。 (它有时仍会显示原始分辨率并在其他分辨率上调整大小)似乎时间是这里真正的问题。也许在图像实际上在 DOM 中之前调用调整大小以在之后再次选择它?你们的任何建议将不胜感激。

【问题讨论】:

    标签: javascript jquery image dom resize


    【解决方案1】:

    我猜有时图像还没有加载。在这种情况下,原始大小仍然未知 (0),并且由于除以零,计算会导致 NaN 值。

    当图像的加载事件触发时调整大小应该是一个选项。

    【讨论】:

    • 啊,好像是这样,让我试试看。
    • +1 用于快速响应并找到问题的真正根源,我会将您的答案标记为正确,尽管我希望可以将其提供给您和 Mark Eirich
    【解决方案2】:

    您将需要special image load event plug-in。否则,如果图像已经在浏览器的缓存中,则不会触发该事件。然后你可以这样做:

    $('img.pull').load(function(i){
        // ...
    });
    

    【讨论】:

    • 我是否需要担心我正在将图像添加到 dom 并且可能需要 .live() ??
    • 我认为该插件可以与 .live() 一起工作。用法是$('img.pull').live('load', function(i) {}); ...我还没有测试过。
    • 它没有在现场触发(我试过你是怎么做的)......所以我所做的是从一个带有空 src 的 img 标签开始......然后动态更改它的 src而不是弄乱 DOM
    • +1 获得一些令人惊叹的建议/帮助,帮助他们度过难关。我给了莫勒博士正确的答案 b/c 这是我遇到的根本问题。但是,如果没有您的帮助,我也会遇到这个问题。我希望我能同时接受,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-29
    • 2014-11-08
    • 2010-11-11
    • 1970-01-01
    • 2012-05-01
    • 2013-04-13
    • 1970-01-01
    相关资源
    最近更新 更多