多个元素上的jQuery变量高度不起作用

时间:2012-05-24 08:42:01

标签: jquery variables height jquery-animate

我正在研究一个小型的jQuery,而且我已经做了大约90%(我自己可能会添加)。但是现在我打了一堵墙,因为我的代码变得更大了,我似乎无法找到我的最后一个问题。

http://jsfiddle.net/7TRqh/ 在这个jsFiddle上你可以看到我的项目。

我有3个(或更多/更少)不同的div,它们的高度都是变量。按钮“meer”和“minder”使元素向上/向下滑动,这一切都很好(虽然代码可能有点乱)。

但问题是它只抓取第一个元素的可变高度。 192px并将其用于所有元素,尽管它们更高。所以变量

有问题
        var currentHeight = $('.book').css('height');
            $('.book').css('height','auto');
        var animateHeight = $('.book').css('height');
            $('.book').css('height', currentHeight);

但我似乎无法找到错误,我希望有人可以帮我解决这个最后一个小问题。

2 个答案:

答案 0 :(得分:2)

如果你打电话给$('.book'),你会调用类book的所有元素,而你只会收到第一个元素的高度(因为你要求的是一个值:高度。它无法返回数组。

您可能需要做的是为每个不同的.book元素提供不同的ID,例如book1book2book3。您现在可以获得每个book的高度。


编辑:

$('#myID').click (function () {
  // do some expanding
  // let's get the height!
  $(this).css('height'); // this is the height of the current clicked item. 
  $(this).parent.css('height'); // this is the height of the parent of the clicked item.
}

您也可以在一组元素上调用此函数,例如$('.book .meerButton').click(function(){});

$(this)变量非常好,如果您以前从未见过它,请在jQuery文档中阅读有关它的内容。

答案 1 :(得分:1)

$('。book')返回书类的所有元素,高度仅对一个元素起作用。 要解决此问题,您可以使用每个功能:

$('.book').each(function(){
  var $this = $(this);
  var currentHeight = $this.css('height');
  $this.css('height','auto');
  ...
});