2012-08-02 18 views
0

这是我得到它已被追加之后的jQuery .append元素的性质

var path = $('#sprite').css('background-image').replace('url', '').replace('(', '').replace(')', '').replace('"', '').replace('"', '') 
var tempImg = '<img id="tempImg" src="' + path + ' "/>'; 
$('body').append(tempImg); 
alert($('#tempImg').width()); 

结果是0,但如果我去到一个控制台,然后输入$('#tempImg').width(),我们得到正确的宽度。

那么,什么似乎是追加只是“装”的代码执行后,我需要用我的代码项目已被追加后,有没有办法?

+0

你需要等待图像负载,有几个答案,以及如何做到这一点很好的代码示例。 – adeneo 2012-08-02 19:05:51

+0

你什么时候调用这个代码?你试过用$(function(){...})来包装它。 ? – Vlad 2012-08-02 19:05:53

+0

的代码被称为成$(文件)。就绪(函数(){}); – steps 2012-08-02 19:25:30

回答

0

多亏了这里的一些意见和答案我取得了成功实现我的目标

frame_width = $('#sprite').width(); 

var path = $('#sprite').css('background-image').replace('url', '').replace('(', '').replace(')', '').replace('"', '').replace('"', '') 
var tempImg = '<img id="tempImg" src="' + path + ' "/>'; 
    $('body').append(tempImg); 
    $('#tempImg').load(function(){ 
     alert($("#tempImg").width()); 
    }); 

这个工作,并通知了正确的价值 谢谢大家

0

必须等待加载图像。

var path = $('#sprite').css('background-image').replace('url', '').replace('(', '').replace(')', '').replace('"', '').replace('"', ''); 
var tempImg = new Image(); 
tempImg.id = "tempImg"; 
$(tempImg).load(function(){ 
    $('body').append(tempImg); 
    alert($(tempImg).width()); 
}); 
tempImg.src = path; 
+0

它没有工作,但我所看到的,你没有在tempImg创建使用路径值,我不明白你做了什么。 – steps 2012-08-02 19:29:04

+0

绑定load事件后,路径被设置为src属性。它是如何工作的?它什么都不做?控制台中是否显示错误或警告?图像是否被附加了?警报是否警告错误的值? – 2012-08-02 19:30:31

+0

警报没有任何警觉,但使用我实现了我的目标负载的功能,谢谢 – steps 2012-08-02 19:33:07