jQuery:函数没有执行

时间:2012-05-18 22:13:18

标签: javascript jquery html css

我正在尝试执行两次功能,而我无法弄清楚我做错了什么。 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);。由于某种原因,它似乎没有执行。有什么想法吗?

2 个答案:

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

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

答案 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();
}