每个jQuery - 第一个变量没有获得(某些)刷新的宽度值

时间:2015-07-06 10:07:43

标签: javascript jquery css

我有一个非常不寻常的问题,我几个小时都无法解决。我有一个带图像的幻灯片。我想将这些图像放在幻灯片div中,使用“减去边距左方法”,但第一个图像SOMETIMES无法获得宽度值,因此margin-left属性为0,这意味着第一个的一半图像悬挂在div之外。

这是我写的jQuery代码(这段代码在我的文档末尾):

$('.slider img').each(function() {      
    var iw = $(this).width();
    ih = $(this).height();    
    $(this).css({
        'left' : '50%',
        'margin-left' : '-'+iw/2+'px'
    });
});

任何想法我的代码有什么问题? (抱歉我的英语不好)。

2 个答案:

答案 0 :(得分:0)

可能是因为图像尚未加载,因此一种解决方案是使用加载回调来进行计算

$('.slider img').load(function () {

    var iw = $(this).width();
    var ih = $(this).height();

    $(this).css({
        'left': '50%',
        'margin-left': '-' + iw / 2 + 'px'
    });


}).filter(function () {
    //if the element is already loaded manually trigger the event
    return this.complete
}).trigger('load');

答案 1 :(得分:0)

或者DOM未加载完成,或者<string.h>的不可见元素被截获代码。

如果您尝试获取display: none元素的宽度和高度,建议您放置display:nonedisplay:block

有了这些信息,我无法为您提供更多帮助