2016-06-25 293 views
-1

我需要扩大溢出设置为通过CSS隐藏的股利。当点击«展开»时,div的高度被扩展到显示整个文本所需的高度。要做到这一点,我用这个代码:扩大div滚动高度

$(".expand").click(function() { 
$('#mainDiv').animate({ 
height: $('#mainDiv').get(0).scrollHeight 
}, 500, function(){ 
$(this).height('auto'); 
}); 
}); 

这工作与这样的硬编码款预期:

<p class="expand">Expand …</p> 

现在我想插入这一段动态取决于是否文本在div比合适div更长。如果它小于divs设定的高度,则不需要这一段。所以我试图通过添加一个函数来实现这一点,因为代码现在看起来像这样:

$(document).ready(function() { 
var height = $('#mainDiv').prop('scrollHeight'); 
if(height>420){ 
$("<p class='expand'>Expand …</p>").insertAfter('#mainDiv'); 
} 
}); 

$(".aufklappen").click(function() { 
$('#hauptTextInhaltReduziert').animate({ 
height: $('#hauptTextInhaltReduziert').get(0).scrollHeight 
}, 500, function(){ 
$(this).height('auto'); 
}); 
}); 

插入段落好吧。但是:它不起作用,点击段落时没有任何反应。

帮助非常感谢。

+0

你可以创建一个jsfiddle。 – frnt

回答

0

您的代码不包括DOM更改。使用以下命令:

$(".aufklappen").on("click", function() { 
    ... 
}); 
0

使用绑定到容器/体委托的事件处理程序:
试试这个:

$('body').on('click', '.aufklappen', function(){ 
    $('#hauptTextInhaltReduziert').animate({ 
    height: $('#hauptTextInhaltReduziert').get(0).scrollHeight 
    }, 500, function(){ 
    $(this).height('auto'); 
    }); 
}); 


也就是说,绑定到一个真实存在的那一刻一个元素JS运行(页面加载时存在主体),并在.on()的第二个参数中提供一个选择器。当点击发生在body元素上时,jQuery检查它是否应用于匹配.aufklappen选择器的那个元素的子元素。

+0

非常感谢Anuj。这个伎俩。你安全了我的一天! –

+0

很高兴帮助:)接受为正确答案;) –