Скрыт элемент или нет, функция isNodeHidden ()
Часто приходится динамически показывать и скрывать элементы: от валидации форм до реактивных SPA-разметок. Метод BX.isNodeHidden(node)
возвращает true
, если переданный DOM-узел скрыт, и false
, если отображается. Под «скрыт» понимается любой из вариантов:
style="display:none"
или унаследованныйdisplay:none
type="hidden"
у<input>
- элемент находится внутри скрытого родителя
- элементу назначен CSS-класс c
visibility:hidden
илиopacity:0
и одновременнымpointer-events:none
(двойная проверка ядра)
BX.isNodeHidden(
// любой DOM-узел (Element, HTMLElement, Text и т.д.)
node
)
Минимальный пример
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<title>Демо BX.isNodeHidden</title>
<!-- Подключаем ядро Битрикс -->
<script src="/bitrix/js/main/core/core.js"></script>
<style>
#panel, #result {
cursor:pointer;
width:280px; margin:12px auto; padding:8px;
text-align:center; border-radius:6px;
background:#c5c5c5; color:#fff; box-shadow:0 0 10px #333;
user-select:none;
}
</style>
</head>
<body>
<div id="panel">Проверить скрытость элементов</div>
<input id="t1" type="text" maxlength="20" value="t1">
<input id="t2" type="hidden" maxlength="20" value="t2">
<div id="result" style="display:none"></div>
<script>
BX.ready(function () {
// Клик по панели запускает проверку
BX.bind(BX('panel'), 'click', function () {
const resText = [
't1 скрыт: ' + BX.isNodeHidden(BX('t1')),
't2 скрыт: ' + BX.isNodeHidden(BX('t2'))
].join(' | ');
BX.adjust(BX('result'), {
style : {display: 'block'},
text : resText
});
});
});
</script>
</body>
</html>