Javascript 在生成的内容上使用width()获取宽度
jQuery方法Javascript 在生成的内容上使用width()获取宽度,javascript,jquery,html,Javascript,Jquery,Html,jQuery方法.width()用于获取生成元素的宽度,如下所示: html: <div class='row-fluid' id='photo-preview'></div> javascript: for(i = 0;i < 4;i++){ var imageSpan = "<div class='span3' id='span_" + i + "'><img src='" + images[i] +"'></div&g
.width()
用于获取生成元素的宽度,如下所示:
html:
<div class='row-fluid' id='photo-preview'></div>
javascript:
for(i = 0;i < 4;i++){
var imageSpan = "<div class='span3' id='span_" + i + "'><img src='" + images[i] +"'></div>"
$('#photo-preview').append(imageSpan);
var w = $('#span_' + i).width();
console.log(w);
}
html:
javascript:
对于(i=0;i<4;i++){
var imageSpan=“”
$(“#照片预览”).append(imageSpan);
var w=$('#span'+i).width();
控制台日志(w);
}
但是它得到了不正确的宽度值。它是百分比的值,而不是像素。例如,w
应该是400(400px),但是js得到了80(80%)
我认为问题可能是因为元素是动态生成的。在控制台中,当加载所有元素时,我可以使用.width()
获得正确的值
有什么解决方法吗?尝试使用
即
这是我做的一把非常愚蠢的小提琴。我将宽度设置为80%。如果你去控制台,你会看到像素宽度(448像素)
您必须等待图像的加载事件,然后才能获得正确的高度
var img = '<img src="img_path.jpg">';
$(img)
.load(function() {
console.log("width", $(this).width());
})
.appendTo('#photo-preview');
var-img='';
美元(img)
.load(函数(){
log(“width”,$(this.width());
})
.appendTo(“#照片预览”);
编辑:要与您的示例匹配:
html:
<div class='row-fluid' id='photo-preview'></div>
javascript:
for(i = 0;i < 4;i++){
var img = "<img src='" + images[i] +"'>";
$(img)
.load(function() {
console.log("width", $(this).width());
})
.appendTo("<div class='row-fluid' id='photo-preview'>")
.appendTo('#photo-preview');
}
html:
javascript:
对于(i=0;i<4;i++){
var img=“”;
美元(img)
.load(函数(){
log(“width”,$(this.width());
})
.附录(“”)
.appendTo(“#照片预览”);
}
在附加content@Eruthx但它不起作用。.width()
总是以像素为单位给出宽度。是否确定元素的宽度未设置为80像素?有机会看到演示吗?你能发布css代码吗?如果span的宽度基于其中图像的宽度,你可能需要在css中将宽度设置为span,否则你必须等待图像加载。
html:
<div class='row-fluid' id='photo-preview'></div>
javascript:
for(i = 0;i < 4;i++){
var img = "<img src='" + images[i] +"'>";
$(img)
.load(function() {
console.log("width", $(this).width());
})
.appendTo("<div class='row-fluid' id='photo-preview'>")
.appendTo('#photo-preview');
}