2017-03-18 7 views
-2
$(document).ready(function(){ 
$(".firstUL").css('display','none'); 

    $(".matches").click(function(){ 
     $(".firstUL").slideToggle(); 
    }); 

    if ($(".firstUL").is(":visible")){ 

     $(".closeMatches").click(function(){ 
      $(".firstUL:visible").slideToggle(); 
     }); 
    }; 
}); 

クリック.matches.firstUL slidetoggleを閉じます。 .firstULが表示されていて、.closeMatchesが閉じることができるか/ slidetoggle .firstULにチェックしてください。jQueryのは、何かが開いているかどうかを確認し、それが

どこが間違っていましたか?

+0

は 'html'となどとのライブデモを共有することができますか..? – Pedram

答えて

0

表示されていることを確認してください。

$("#ID").is(':visible'); 

非表示になっているかどうかを確認してください。

$("#ID").is(':hidden'); 

注:しかし、あなたの場合には、あなたが同じクラスを持つ要素よりも多く存在があることを意味.firstULクラスセレクタを使用しています。また、すべてが同時にhiddenまたはvisibleではない可能性があります。

0

以外のコードのif partを削除するだけです。

$(document).readyのコードを使用すると、DOMが完全に読み込まれたときにコードが実行されます。今度は、関数の中からfirstULが表示されているかどうかをチェックしているとき、jsはそれが常に隠されていると判断します。それは要素がマッチボタンをクリックしているときにだけ表示されるからです。マッチボタンがクリックされた後では、ページがリロードされたときにのみ実行されるため、if部分は実行されません。したがって、if文は常にそれを隠しています。

作業スニペット

$(document).ready(function() { 
 
    $(".firstUL").css('display', 'none'); 
 

 
    $(".matches").click(function() { 
 
    $(".firstUL").slideToggle(); 
 
    }); 
 

 

 
}); 
 
$('.firstUL').ready(function(){ 
 

 
    $(".closeMatches").click(function() { 
 
    $(".firstUL").css('display', 'none'); 
 
    }); 
 
});
<div class="firstUL">.firstUL</div> 
 
<button class="matches">matches</button> 
 
<button class="closeMatches">closeMatches</button> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>

+0

コードを書式化して、おそらくifをロードハンドラの中に入れてください - それは正しく表示されません – mplungjan

+0

@neophyte。私はあなたのコードがここで動作するのを見ていますが、コードをコピーしてテストすると、最初の部分(slidetoggle)だけが動作します。私は仕事に2番目の部分を得ることができません。 –

+0

@LarsJensen 'firstUL'クラスには複数の要素がありますか? – neophyte

関連する問題