1

http://dev.clickymedia.co.uk/rdicoursefinder/course-finder/

如果您查看该链接,您将看到有许多过滤器同时起作用。框的整体高度根据过滤器插件显示的项目数量进行调整。

然后,当您单击每个项目时,我们会有一个弹出框。这也有不同的高度,并将下一个项目向下推。我们需要调整容器的高度,同时考虑到item被点击前容器的原始高度,以及弹出框的高度。

我已经编写了一些 jQuery 来执行此操作,但是,正如您将看到的,每次当您单击项目以显示框时,它会一次又一次地将蓝色弹出框的高度添加到整体高度,而不是一次显示,相应地调整容器的高度。

我用于高度的 jQuery 如下:

var originalHeight = $('#filter-results').height();
var thisHeight = 70 + $('.resultsShowing').height();

var overallHeight = originalHeight + thisHeight;
$('#filter-results').height(overallHeight);

任何帮助将非常感激!

4

4 回答 4

0

这条线

var originalHeight = $('#filter-results').height();

将需要在您的click()活动之外,并且应该只在您的活动之外完成一次$(document).ready()

于 2013-06-25T11:32:30.080 回答
0

这是因为每次生成更多高度时都会使用新高度。

您需要originalHeight在第一次需要时将其移动到一个特定点,然后将其单独放置在那里。然后,只thisHeight需要更新,结果高度应该是前者(静态)+后者(动态)。

于 2013-06-25T11:32:37.640 回答
0

首先删除这个

window.setInterval(function(){
///etc
}), 1);

它正在杀死我在 Chrome 中的机器。

于 2013-06-25T11:38:06.057 回答
0

如果你想在显示之前知道蓝色元素的高度,你应该在内存中创建它:

var blueBox = $('<div />').html( ... );
var height = blueBox.height();

现在您可以将此高度添加到整个容器并显示蓝色元素:

blueBox.appendTo('.overall');

附言。抱歉伪代码

于 2013-06-25T11:38:15.113 回答