Поскольку slideToggle
является переходом (с течением времени), проверьте видимость до , чтобы вызвать переход, т. Е. Отменить порядок вызовов. Например,
<button id="btn1" onclick="getVis(div1), $(div1).slideToggle(500)">button 1</button>
Вот демонстрация.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Visibility</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
function getVis(textDiv){
if ($(textDiv).is(":visible")) {
alert("visible");
}else{
alert("not visible");
}
}
</script>
</head>
<body>
<button id="btn1" onclick="getVis(div1), $(div1).slideToggle(500)">button 1</button>
<div id = "div1">div 1 text</div>
<br>
<button id="btn2" onclick="getVis(div2), $(div2).slideToggle(500)">button 2</button>
<div id = "div2">div 2 text</div>
</body>
</html>
Чтобы определить состояние видимости после перехода, вызовите getVis
из процедуры завершения следующим образом:
<button id="btn1" onclick="$(div1).slideToggle(500, function() { getVis(div1) })">button 1</button>
Вот демонстрация завершения подхода.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Visibility</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script>
<script>
function getVis(textDiv){
if ($(textDiv).is(":visible")) {
alert("visible");
}else{
alert("not visible");
}
}
</script>
</head>
<body>
<button id="btn1" onclick="$(div1).slideToggle(500, function() { getVis(div1) })">button 1</button> <div id = "div1">
div 1 text
</div>
<br>
<button id="btn2" onclick="$(div2).slideToggle(500, function() { getVis(div2) })">button 2</button>
<div id = "div2">div 2 text</div>
</body>
</html>