我有一个最初隐藏的评论部分,会通过评论计数上的链接和/或添加评论的链接显示。
我希望评论部分可以通过任一链接打开,但如果已经打开则不会关闭。
$( "#commentsToggle").click(function() {
$( "#comments" ).toggle( "fast" );
return false;
});
$( ".comment-add a").click(function() {
$( "#comments" ).toggle( "fast" );
return false;
});
见jsfiddle http://jsfiddle.net/pQ2np/
由于
编辑:'#commentsToggle'应该能够切换(隐藏)评论,如果打开,' .comment-添加'应该只显示,而不是隐藏,因为它打开了一个ajax评论表。
这是代码解决了我的需求:
$( "#commentsToggle").click(function() {
$( "#comments" ).toggle( "fast" );
return false;
});
$( ".comment-add a").click(function() {
$( "#comments" ).show( "fast" );
return false;
});
答案 0 :(得分:3)
如果您希望它们保持开放状态。使用show()
代替toggle()
。
$( "#commentsToggle").click(function() {
$( "#comments" ).show( "fast" );
return false;
});
$( ".comment-add a").click(function() {
$( "#comments" ).show( "fast" );
return false;
});
答案 1 :(得分:1)
您可以将两个选择器放在一个函数中,并将true作为第一个参数传递给docs中引用的showOrhide。
$( "#commentsToggle, .comment-add a").click(function() {
$( "#comments" ).toggle( true );
return false;
});
答案 2 :(得分:0)
这是updated Fiddle个增强功能。以下是它的要点:
$( "#commentsToggle, .comment-add a").click(function (e) {
e.preventDefault();
var $comments = $("#comments");
if ($comments.is(":visible")) {
return;
}
$comments.show("fast");
});
更新:我错过了这样一个事实,即如果您再次“显示”这些链接但希望阻止它们被切换,您只需要使用.show()
方法。如果您的意图是让评论部分出现一次并保持开放,则无需切换。
答案 3 :(得分:0)
尝试使用以下链接中的代码(我已更新了您自己的代码)。
我不知道为什么要使用切换而不显示。但通常你可以检查css display属性,因为这是jquery事件使用的。
$( "#commentsToggle").click(function() {
if ($( "#comments" ).css("display") != "block")
$( "#comments" ).toggle( "fast" );
return false;
});
$( ".comment-add a").click(function() {
if ($( "#comments" ).css("display") != "block")
$( "#comments" ).toggle( "fast" );
return false;
});
你在寻找吗?
答案 4 :(得分:0)
您可以使用.show()代替.toggle(),或者您可以添加" true"作为参数之一:
$( "#commentsToggle").click(function() {
$( "#comments" ).toggle( "fast", true );
return false;
});
$( ".comment-add a").click(function() {
$( "#comments" ).toggle( "fast", true );
return false;
});
使用false而不是true将隐藏元素,因此在稍后使用变量可能会有用。