0

我试图执行一个函数两次,但我不知道我做错了什么。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);第二次打电话的地方。由于某种原因,它似乎没有执行。有任何想法吗?

4

2 回答 2

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');
});

http://jsfiddle.net/g6PLu/9/

于 2012-05-18T22:30:15.787 回答
1

当您调用显示时,这就是为什么您需要调用隐藏或删除该样式部分的<p>更改<p style="display: block; ">

这是预期的行为吗?

else if ($(this).parent().hasClass('open')) {
    $(this).parent().removeClass('open').addClass('closed').children().hide();
    $('div').each(truncate);
    $(this).show();
}
于 2012-05-18T22:23:17.810 回答