我有一个包含评论的隐藏容器,里面有一个<div>
<p>
,上面写着&#34;显示所有评论&#34;我点击显示评论。当我单击div时,它会完美地显示隐藏的评论容器,但是当我再次单击它时,它不会隐藏评论容器。我想我的jQuery代码可能有问题吗?
var commentsHidden = $( ".comments-container" ).is( ":hidden" );
if (commentsHidden) {
$( ".see-all" ).click(function() {
$('.comments-container').show('slow');
$('.see_hide').text('Hide Comments');
});
} else {
$( ".see-all" ).click(function() {
$('.comments-container').hide();
});
};
答案 0 :(得分:2)
初始化commentsHidden时,它永远不会更新,因此它始终具有初始值。您需要检查每次点击是否隐藏它。因此,您不需要if语句来附加事件。只需附加一个单击事件并在事件内部检查它是否隐藏并相应地继续。
$(".see-all").click(function() {
var commentsHidden = $(".comments-container").is(":hidden");
if (commentsHidden) {
$('.comments-container').show('slow');
$('.see_hide').text('Hide Comments');
} else {
$('.comments-container').hide();
}
});
答案 1 :(得分:0)
当您致电on('click', ..)
或其快捷方式click(..)
时,您需要安装新的处理程序。最终发生的事情是,您在同一个对象上有多个处理程序,并且它们 all 被调用。相反,要么只安装一次处理程序:
// In global code or code that gets executed upon module load
// Only once!
$(".see-all").click(function() {
if ($( ".comments-container" ).is( ":hidden" )) {
$('.comments-container').show('slow');
$('.see_hide').text('Hide Comments');
} else {
$('.comments-container').hide();
}
});
或unbind旧处理程序:
$( ".see-all" ).off('click'); // Unbind all click handlers
var commentsHidden = $( ".comments-container" ).is( ":hidden" );
if (commentsHidden) {
$( ".see-all" ).click(function() {
$('.comments-container').show('slow');
$('.see_hide').text('Hide Comments');
});
} else {
$( ".see-all" ).click(function() {
$('.comments-container').hide();
});
};
答案 2 :(得分:0)
您需要检查click函数()中的标志状态。现在你拥有它的方式只会在页面加载时绑定点击处理程序。
$( ".see-all" ).click(function() {
var commentsHidden = $( ".comments-container" ).is( ":hidden" );
if (commentsHidden) {
$('.comments-container').show('slow');
$('.see_hide').text('Hide Comments');
} else {
$('.comments-container').hide();
}
});
答案 3 :(得分:0)
尝试更改为
$( ".see-all" ).click(function() {
var commentsHidden = $( ".comments-container" ).is( ":hidden" );
if (commentsHidden) {
$('.comments-container').show('slow');
$('.see_hide').text('Hide Comments');
});
} else {
$( ".see-all" ).click(function() {
$('.comments-container').hide();
});
}
});
点击处理程序应该只绑定一次,并且每次单击p元素时都需要检查注释是否隐藏。