jQuery延迟脚本

时间:2013-07-31 11:10:26

标签: jquery

我正在使用这个js使两个div具有相同的高度,与静态内容一起工作正常,但是当动态加载图像/内容时,高度被设置为0px因为我想脚本在内容之前触发被拉了。有没有办法延迟这个几秒钟的射击,所以正确的高度设置?尝试超时功能,但无法使其工作

// make stuff the same height
equalheight = function (container) {

var currentTallest = 0,
 currentRowStart = 0,
 rowDivs = new Array(),
 $el,
 topPosition = 0;
$(container).each(function () {

    $el = $(this);
    $($el).height('auto')
    topPostion = $el.position().top;

    if (currentRowStart != topPostion) {
        for (currentDiv = 0; currentDiv < rowDivs.length; currentDiv++) {
            rowDivs[currentDiv].height(currentTallest);
        }
        rowDivs.length = 0; // empty the array
        currentRowStart = topPostion;
        currentTallest = $el.height();
        rowDivs.push($el);
    } else {
        rowDivs.push($el);
        currentTallest = (currentTallest < $el.height()) ? ($el.height()) :     (currentTallest);
    }
    for (currentDiv = 0; currentDiv < rowDivs.length; currentDiv++) {
        rowDivs[currentDiv].height(currentTallest);
    }
});
}


$(window).load(function () { equalheight('.equal'); });
$(window).resize(function () { equalheight('.equal'); });

2 个答案:

答案 0 :(得分:0)

你的答案没有提供足够的信息来提供一个明确的答案,我会跳过枪并假设你正在调用函数的setTimeout,如果是这种情况,那么试试吧函数本身setTimeout就像这样。

// make stuff the same height

equalheight = function (container) {
    window.setTimeout(function () {  // Start setTimeout

        var currentTallest = 0,
            currentRowStart = 0,
            rowDivs = new Array(),
            $el,
            topPosition = 0;
        $(container).each(function () {

            $el = $(this);
            $($el).height('auto')
            topPostion = $el.position().top;

            if (currentRowStart != topPostion) {
                for (currentDiv = 0; currentDiv < rowDivs.length; currentDiv++) {
                    rowDivs[currentDiv].height(currentTallest);
                }
                rowDivs.length = 0; // empty the array
                currentRowStart = topPostion;
                currentTallest = $el.height();
                rowDivs.push($el);
            } else {
                rowDivs.push($el);
                currentTallest = (currentTallest < $el.height()) ? ($el.height()) : (currentTallest);
            }
            for (currentDiv = 0; currentDiv < rowDivs.length; currentDiv++) {
                rowDivs[currentDiv].height(currentTallest);
            }
        });
    }, 5000); // End setTimeout
};

答案 1 :(得分:-1)

为什么当你选择你的元素时:

$el = $(this);
$($el).height('auto');

您无法选择选择器。 你只需写:

$el = $(this);    
$el.height('auto');

我不知道我是否很明显这么说但是看起来很奇怪。

然后针对您的问题,您应该尝试在ajax成功中设置高度。 并检查您的选择器以确保它是正确的。