2

我正在做一个小的 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);

但我似乎无法真正找到错误,我希望这里有人能帮助我解决最后一个小问题。

4

2 回答 2

2

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

您可能需要做的是给每个不同.book的元素一个不同的 id,book1例如book2book3。您现在可以获得每个不同books 的高度。


编辑:

$('#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 文档中阅读有关它的内容。

于 2012-05-24T08:47:31.317 回答
1

$('.book') 返回具有 book 类的所有元素,并且 height 仅对一个元素进行操作。Toi 解决此问题,您可以使用 each 函数:

$('.book').each(function(){
  var $this = $(this);
  var currentHeight = $this.css('height');
  $this.css('height','auto');
  ...
});
于 2012-05-24T09:02:02.757 回答