如果未被遮挡,则从两次单击中切换一个div

时间:2014-06-11 18:43:41

标签: javascript jquery html if-statement

我有一个最初隐藏的评论部分,会通过评论计数上的链接和/或添加评论的链接显示。

我希望评论部分可以通过任一链接打开,但如果已经打开则不会关闭。

$( "#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;
});

http://jsfiddle.net/pQ2np/6/

5 个答案:

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

http://jsfiddle.net/pQ2np/3/

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

jsfiddle

你在寻找吗?

答案 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将隐藏元素,因此在稍后使用变量可能会有用。