0

関数を 2 回実行しようとしていますが、何が間違っているのかわかりません。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 行目にあり、ここで 2 回目に呼び出します$('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

show を呼び出すときは、そのため、hide を呼び出す<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 に答える