我正在尝试执行两次功能,而我无法弄清楚我做错了什么。 JSFiddle:http://jsfiddle.net/g6PLu/3/
的Javascript
function truncate() {
$(this).addClass('closed').children().slice(0,2).show().find('.truncate').show();
}
$('div').each(truncate);
$('.truncate').click(function() {
if ($(this).parent().hasClass('closed')) {
$(this).parent().removeClass('closed').addClass('open').children().show();
}
else if ($(this).parent().hasClass('open')) {
$(this).parent().removeClass('open').addClass('closed');
$('div').each(truncate);
$(this).show();
}
});
问题出在第15行,我第二次打电话给$('div').each(truncate);
。由于某种原因,它似乎没有执行。有什么想法吗?
答案 0 :(得分:2)
我认为你过于复杂的简单任务。我会利用这些类来显示/隐藏CSS(你正在添加类但不使用它们。)。
查看这个更简单的版本:
相关CSS
.closed p { display: none; }
.closed p:nth-child(2) { display: block; }
<强> JS 强>
$('div').addClass('closed');
$('.truncate').click(function() {
$(this).closest('div').toggleClass('closed');
});
答案 1 :(得分:1)
当您致电show时,<p>
更改为<p style="display: block; ">
这就是原因,您需要调用隐藏或删除该样式部分
这是指定的行为吗?
else if ($(this).parent().hasClass('open')) {
$(this).parent().removeClass('open').addClass('closed').children().hide();
$('div').each(truncate);
$(this).show();
}