我尝试编码的是以下内容:
我成功了。 2.但是,点击链接会扩展所有div中的所有内容,从它应向下扩展的内容开始。
我做错了什么?
提前致谢!
$(function() {
$('.text').each(function() {
var content = $(this).find('.text_content');
if(content.outerHeight() >75) {
content.css('height','75px').css('overflow','hidden');
content.after('<div class="text_readmore">read more</div>');
$('.text_readmore').each(function() {
$(this).click(function() {
content.css('height','').css('overflow','');
});
});
}
});
});
答案 0 :(得分:1)
您在content
处理程序中使用.click
变量,这并不是您想要的。您还可以重构代码,以便为所有此类.click
链接定义一次text_readmore
处理程序,以提高效率。
尝试这样的事情:
$(function() {
$('.text').each(function() {
var content = $(this).find('.text_content');
if(content.outerHeight() >75) {
content.css('height','75px').css('overflow','hidden');
content.after('<div class="text_readmore">read more</div>');
}
});
});
$(document).on('click', '.text_readmore', function() { // event delegation
$(this).closest('.text_content').css('height','').css('overflow','');
});
如果您在1.7之前使用的是jQuery版本(即添加.on
时),请改用.delegate
:
$(document).delegate('.text_readmore', 'click', function() { // event delegation
$(this).closest('.text_content').css('height','').css('overflow','');
});