切换除了单击的

时间:2016-02-24 07:29:52

标签: javascript jquery html

我需要切换(显示/隐藏)<p>这是所点击的<li>的子元素,而所有其他<p>应该隐藏。我能够做到这一点。

但是点击相同的元素(现在显示)不会隐藏。如何实现这一目标?

&#13;
&#13;
$(document).ready(function(){
    $("p").hide();
    $("li").click(function(){
        $("p").not(this).hide(200);
        $("p", this).toggle(200);
    });
});
&#13;
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
</head>
<body>
<ul>
  <li><a>q1</a>
    <p>a1</p>
  </li>
  <li><a>q2</a>
    <p>a3</p>
  </li>
  <li><a>q3</a>
    <p>a3</p>
  </li>
  <li><a>q4</a>
    <p>a4</p>
  </li>
</ul>
</body>
</html>
&#13;
&#13;
&#13;

4 个答案:

答案 0 :(得分:2)

您需要将要排除的p元素传递给not(),您现在正在传递this元素<{1}}

&#13;
&#13;
li
&#13;
$(document).ready(function() {
  $("p").hide();
  $("li").click(function() {
    var $ps = $("p", this).stop(true).toggle(200);
    $("p").not($ps).stop(true).hide(200);
  });
});
&#13;
&#13;
&#13;

答案 1 :(得分:0)

$(document).ready(function(){
    $("p").hide();
    $("li").click(function(){
        $(this).find('p').toggle(200);
        $(this).siblings('p').hide(200);
    });
});

DEMO 试试这样做

答案 2 :(得分:0)

使用这个简单的逻辑:

$(document).ready(function(){
    $("p").hide();
    $("li").click(function(){

        $("p").not(this).hide(200);

       if($("p",this).is(":visible")){
        $("p", this).hide(200);}
       else{
       $("p", this).show(200);}
    });
});

检查this小提琴

答案 3 :(得分:0)

更改您的jQuery代码,如

alter SESSION set NLS_DATE_FORMAT = 'DD-MM-YYYY HH24:MI:SS';