我有以下代码,它循环获取表中的所有图像,然后将它们附加到#featured
,然后再附加到#wrapper
。问题是在所有内容都附加到#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');
});
但这并不管用。
发布于 2011-10-21 13:05:07
您的问题是,每次您说$(featured)
时,您都在创建一个全新的jQuery对象;然后您对它做了一些操作,然后丢弃了它-以及您对它所做的事情。其结果是,您最终在#wrapper
中附加了一个空的<div id="featured">
:图像不是没有维度的,它们根本不存在。
创建一个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
已经在DOM中,那么一遍又一遍地做$(x).append(...)
是可行的;您的<div id="featured">
不是这样的东西。如果您首先将其附加到#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对象。第一种方法要好得多。
https://stackoverflow.com/questions/7845118
复制相似问题