将div扩展为滚动高度
我需要通过css扩展一个溢出设置为隐藏的div。 单击“展开”时,div的高度将扩展到显示整个文本所需的高度。 为此,我使用此代码:
$( ".expand" ).click(function() { $('#mainDiv').animate({ height: $('#mainDiv').get(0).scrollHeight }, 500, function(){ $(this).height('auto'); }); });
这与预期的一样,使用如下硬编码段落:
现在我想动态地插入这个段落,这取决于div中的文本是否比div更合适。 如果它小于div设置的高度,则不需要此段落。 所以我尝试通过添加一个函数来实现这一点,因为代码现在看起来像这样:
$(document).ready(function() { var height = $('#mainDiv').prop('scrollHeight'); if(height>420){ $("
").insertAfter('#mainDiv'); } }); $( ".aufklappen" ).click(function() { $('#hauptTextInhaltReduziert').animate({ height: $('#hauptTextInhaltReduziert').get(0).scrollHeight }, 500, function(){ $(this).height('auto'); }); });
插入段落就好了。 但是:它不起作用,点击段落时没有任何反应。
非常感谢帮助。
您的代码不包含DOM更改。 使用以下内容:
$( ".aufklappen" ).on("click", function() { ... });
使用绑定到容器/正文的委托事件处理程序:
试试这个:
$('body').on('click', '.aufklappen', function(){ $('#hauptTextInhaltReduziert').animate({ height: $('#hauptTextInhaltReduziert').get(0).scrollHeight }, 500, function(){ $(this).height('auto'); }); });
也就是说,绑定到JS运行时存在的元素(页面加载时正文存在),并将第二个参数中的选择器提供给.on()。 当在body
元素上发生单击时,jQuery会检查它是否应用于匹配.aufklappen
选择器的元素的子元素。