javascript - jQuery append 后没有图像尺寸

标签 javascript jquery image load append

我有以下代码,它循环获取表中的所有图像,然后将它们 append 到#featured,然后将其 append 到#wrapper。问题是在所有内容都 append 到 #wrapper 后,图像没有尺寸,因此没有一个显示。这就像图像的宽度和高度都是 0px 一样。我如何克服这个尺寸问题。

var featured = '<div id="featured"></div>';
$('#imageTable tbody tr td img').each(function(){
    $(featured).append('<img src='+$(this).attr("src")+' />');
});
$(featured).appendTo('#wrapper');

我尝试通过这样做来解决这个问题

$(featured).load(function(){
    $(this).appendTo('#wrapper');
});

但这行不通。

最佳答案

你的问题是,每次你说 $(featured) ,您正在创建一个全新的 jQuery 对象;然后你对它做了一些事情,然后把它——以及你对它所做的——扔掉。结果是您最终 append 了一个空的 <div id="featured">#wrapper :图像并不是没有尺寸的,它们只是根本不存在。

创建一个 jQuery 对象并继续使用该对象:

var $featured = $('<div id="featured"></div>');
$('#imageTable tbody tr td img').each(function(){
    $featured.append('<img src='+$(this).attr("src")+' />');
});
$featured.appendTo('#wrapper');

演示:http://jsfiddle.net/ambiguous/PXVG2/

正在做$(x).append(...)一遍又一遍地工作,只要 x是 DOM 中已经存在的东西;你的<div id="featured">不是这样的事。如果您将其 append 到 #wrapper首先和#wrapper在 DOM 中,那么如果你使用 #featured 就可以正常工作而不是 HTML:

var featured = '<div id="featured"></div>';
$(featured).appendTo('#wrapper');
$('#imageTable tbody tr td img').each(function(){
    $('#featured').append('<img src='+$(this).attr("src")+' />');
});

演示:http://jsfiddle.net/ambiguous/vPyy6/

后一种方法相当浪费,它在每个 .each 上创建一个新的 jQuery 对象。迭代。第一种方法要好得多。

关于javascript - jQuery append 后没有图像尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7845118/

相关文章:

c++ - Microsoft 推荐使用哪种 native API 来渲染 2D 图形?

ios - 检查 CCMenuItemImage 的当前图像?

javascript - 获取 Javascript 中所有当前按下的键的列表

java - 检查密码是否与 primefaces + javascript 匹配

javascript - 单击虚拟键盘图标时保持对输入框的关注

javascript - Masonry.js 在 Firefox 中无法正确显示

swift - 如何将图像作为变量传递给单独的 View Controller 中的 UIImageView?

javascript - 如何循环创建带有链接的列表?

javascript - 嵌套函数和闭包是不同还是相同?

php - jQuery 和 PHP 搜索建议脚本