Как заставить работать скрипт на скрытых блоках?
Пытаюсь поменять класс у родителя если дочериный блок не пуст. Есть скрипт, в тесте все работает, класс у родителя удаляет и присваивает, но когда пытаюсь на сайте завести, он не работает. У родителя внутри целое древо div-ов, тот что проверяется пуст или заполнент находиться в самой глубине древа, я использую .closest() чтобы обратиться непосредственно к родительскому блоку и тем самым удалить класс.
Как я уже говорил, на тесте все работает.
$(document).ready(function() {
if ($('.fr-element').text()) {
$('.fr-element').closest('.infonext_block').removeClass('input_remove').css('display', 'block');
}
});
.input_remove {display:none}
.fr-element {padding:0 20px;height: 50px; border: 1px solid red;}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="infonext_block input_remove">
<span>Заголовок</span>
<div class="1">
<div class="2">
<div class="3">
<div class="fr-element" contenteditable="true"><br/>3333</div>
</div>
</div>
</div>
</div>
На сайте структура блоков добавляется автоматически со стороны CMS движка, когда в шаблоне вывожу textarea тегом, что в итоге, посмотрев в консоле браузера, я вижу целую разметку. В этой разметке находиться блок с классом .fr-element, который и проверяется заполнен или пуст, чтобы выполнить действие и удалить класс у родителя, как мы видим в примере.
Либо скрипт загружается первым чем древо блоков, что в итоге не срабатывает, либо что-то другое.
Скрипт не хочет работать с этой цепочкой блоков, которая сформирована самим движком. Если прописать те же блоки в шаблоне, и выводить самостоятельно для теста, все прекрасно работает, пример с теми же классами выше.
Как можно решить? Прошу помощи!
Сама разметка после преобразования документа:
$(document).ready(function() {
if ($('.fr-element').text()) {
$('.fr-element').closest('.infonext_block').removeClass('input_remove').css('display', 'block');
}
});
.input_remove {display:none}
.fr-element {border:1px solid red;}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="infonext_block input_remove">
<span class="btn_prim icons-info-circled-alt">Нет полей для заполнения!</span>
<span class="add_h5">Укажите недостающие ингредиенты:</span>
<div class="text_primehanie">
<div class="wseditor">
<!--panel-->
<div class="fr-box fr-ltr gray-theme fr-basic fr-top" role="application" style="width: 100%;">
<div class="fr-toolbar gray-theme fr-ltr fr-desktop fr-top fr-basic" style="">
<div class="fr-wrapper show-placeholder" dir="ltr" style="height: 314px; overflow: auto;">
<!-- БЛОК КОТОРЫЙ ПРОВЕРЯЕМ -->
<div class="fr-element fr-view" dir="ltr" contenteditable="true" aria-disabled="false" style="min-height: 290px;" spellcheck="true">
ПРОВЕРКА ЭТОГО БЛОКА НА ПУСТОТУ, ЕСЛИ ЗАПОЛНЕН ТО УДАЛЯЕМ КЛАСС (input_remove) У РОДИТЕЛЯ (infonext_block)
<br>
</div>
<!-- END БЛОК КОТОРЫЙ ПРОВЕРЯЕМ -->
<span class="fr-placeholder" style="font-size: 14.4px; line-height: 21.6px; margin-top: 0px; padding-top: 10px; padding-left: 10px; margin-left: 0px; padding-right: 10px; margin-right: 0px; text-align: start;">Впишите те игредиенты, которые нужно добавить к рецепту. Каждый новый ингредиент пишите с новой строки. НАПРИМЕР: Помидор - 1 шт, Мясо куриное - 200 гр и т.е.</span>
</div>
<span class="fr-counter" style="bottom: 2px; margin-right: 0px;">0</span>
</div>
<textarea name="xfield[zametka_admin]" id="xf_zametka_admin" class="wysiwygeditor" placeholder="Впишите те игредиенты, которые нужно добавить к рецепту. Каждый новый ингредиент пишите с новой строки. НАПРИМЕР: Помидор - 1 шт, Мясо куриное - 200 гр и т.е." style="display: none;"></textarea>
</div>
</div>
</div>
</div>
Исходный код сформированный при вставке в шаблон работает, класс удаляет и добавляет. Не могу понять почему, если не добавлять в шаблон сформированный код, и выводить тегом textarea, то не работает. При выводе тегом текстовое поле, движок автоматом скрывает его на странице и формирует ввод текста через div contenteditable, что в итоге получаем громоздкий код со всем на свете.
Проблема была решена, я забыл сам скрипт вставить в основной документ, что в итоге он и не срабатывал. Всем спасибо за помощь!
