在附加后立即获取jquery .append元素的属性

时间:2012-08-02 19:02:34

标签: jquery

这就是我所拥有的

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(),我们会得到正确的宽度。

所以,似乎只是在执行代码后才附加“追加”,我需要在项目被追加后使用我的代码,有没有办法?

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分: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());
    });

这有效并提醒了正确的价值 谢谢大家