【问题标题】:Toggling height of single div in group of divs切换 div 组中单个 div 的高度
【发布时间】:2013-11-14 00:50:47
【问题描述】:

我有一页上有许多具有相同类的 div。我希望他们有一个固定的高度,当点击一个切换按钮时,它会扩展到全高。到目前为止,我已经从互联网上组装了一个脚本,它可以做到这一点,但目前它会扩展页面上的所有 div,而不仅仅是与扩展按钮关联的一个 div。有人可以帮我修复脚本,使其仅扩展一个 div,如果扩展,可能会重置另一个,并在再次单击扩展按钮时将其切换回来?

jQuery(document).ready(function($) {

    $.fn.toggleClick = function() {
        var functions = arguments;
        return this.click(function() {
            var iteration = $(this).data('iteration') || 0;
            functions[iteration].apply(this, arguments); 
            iteration = (iteration + 1) % functions.length; 
            $(this).data('iteration', iteration); 
            });
    };

var $dscr = $(".textblock"),
    $switch = $(".expand a"),
    $initHeight = 130; // Initial height

$dscr.each(function() {
    $.data(this, "realHeight", $(this).height());    // Create new property realHeight
    }).css({ overflow: "hidden", height: $initHeight + 'px' });

    $switch.toggleClick(function() {
      $dscr.animate({ height: $dscr.data("realHeight") }, 300);
      $switch.html("-");

    }, function() {
        $dscr.animate({ height: $initHeight}, 300);
        $switch.html("+");
    });

});

到目前为止,请参阅我的 jsfiddle 脚本: http://jsfiddle.net/N9DfH/1/

【问题讨论】:

  • 最好通过添加 css 类来做到这一点。拥有一个具有高度的类,并在您想要正常大小时删除该类

标签: javascript jquery css html


【解决方案1】:

http://jsfiddle.net/N9DfH/21/

jQuery(document).ready(function () {

    $.fn.toggleClick = function () {
        var functions = arguments;
        return this.each(function () {
            var divel = $(this);
            $('.expand a', divel.parent()).click(function () {
                var iteration = $(this).data('iteration') || 0;
                functions[iteration].apply(divel, arguments);
                iteration = (iteration + 1) % functions.length;
                $(this).data('iteration', iteration);
            });
        });
    };

    var $dscr = $(".textblock"),
        $initHeight = 130; // Initial height

    $dscr.each(function () {
        $.data(this, "realHeight", $(this).height()); // Create new property realHeight
    }).css({
        overflow: "hidden",
        height: $initHeight + 'px'
    }).toggleClick(function () {
        this.animate({
            height: this.data("realHeight")
        }, 300);
    }, function () {
        this.animate({
            height: $initHeight
        }, 300);
    });
});

【讨论】:

  • 太棒了!唯一缺少的是 + 变成 - 并在切换时返回 :)
  • 在toggleClick参数中你可以这样做$('.expand a', this.parent()).html('-');
猜你喜欢
  • 1970-01-01
  • 2013-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-13
  • 2012-09-09
  • 1970-01-01
相关资源
最近更新 更多