У меня небольшой вопрос. Наше агентство работает с Drupal, но мы хотим изменить некоторые мелочи сами. Я разбираюсь в HTML / CSS, но не совсем в JS.
Теперь у меня проблема. Я вставляю свой HTML-код в часть содержимого.
Это мой HTML-код:
<div class = "accordion">
<div>
<input type = "radio" name = "acc" id = "question01" checked = "">
<label for = "question01">question</label>
<div class = "accordion-content">
<p>content</p>
</div>
</div>
Он должен быть гармошкой только с CSS. Он отлично работает локально, но в системе Drupal есть функция Javascript, которая добавляет элемент <div> вокруг <input>, поэтому мой CSS больше не работает, что означает, что я больше не могу открывать аккордеон.
HTML в Drupal:
<div class = "accordion">
<div>
<div class = "medium styledRadio" style = "background-image: url("/assets/img/sprite-radiobuttons-medium.png"); width: 23px; height: 24px; cursor: pointer; background-position: 0px 0px;">
<input checked = "checked" id = "question01" name = "acc" type = "radio" class = "medium" style = "display: none;">
</div>
<label for = "question01">question</label>
<div class = "accordion-content">
<p>content</p>
</div>
</div>
Итак, мой вопрос: есть ли простой способ перезаписать этот JavaScript? Возможно, есть краткое решение для удаления этого лишнего <div> только в class = "accordion", которое я могу добавить в эту часть содержимого.
!! Правильная ссылка - надеюсь поможет: SO - Удаление обертки div без JQuery (необработанный javascript)



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Дополнительный div можно удалить с помощью jQuery. Я не уверен, что это то, что вы ищете. Тем не менее, это может быть решение удалить лишний div
var content = $(".styledRadio").contents();
$(".styledRadio").replaceWith(content);
Добро пожаловать в Stack Overflow!
У вас есть доступ к кодовой базе? Тогда загрузка и включение этого модуля, вероятно, будет большим помощником: CKEditor Аккордеон
Adds a new button to Drupal 8's built in CKEditor which allows the user to create & display any type of content in an accordion format.
Я попытался применить стандарты кодирования к вашим фрагментам кода и понял, что в них обоих отсутствует закрывающий </div>. Это нарочно?
Вы используете модуль Big Pipe для кеширования и исчезает ли эта проблема при его отключении? (Однажды я испытал нечто подобное, описанное здесь https://www.drupal.org/project/drupal/issues/2738685, что подводит меня к следующему вопросу.)
Какую версию Drupal вы используете?
И последнее, но не менее важное: я хотел бы упомянуть, что все остальные ответы здесь просто пытаются вылечить симптомы, когда основной проблемой является JS, который в первую очередь добавляет дополнительный <div>. Но еще большая «проблема» в том, что вы пытаетесь сделать это в поле редактора. Что следует использовать для содержания, а не для функциональности.
Когда вы пытаетесь создать функции в текстовых полях, возникает ряд проблем. Без выделения кода, без автоотступов, без автозавершения кода. После завершения его может очень легко сломать кто-то без ваших навыков. Нет отслеживания версий, нет поиска и замены в базе кода, сложно развертывать в разных средах с разными базами данных.
Вкратце: не делайте этого. Попробуйте упомянутый модуль. Или добавьте другой тип контента (возможно, «Аккордеонный элемент», а затем отобразите эти узлы в Просмотры Аккордеон (функциональность аккордеона, примененная к View), а затем поместите View с сокращенным кодом, предоставленным Вставить представление, в любом месте нужного вам контента.
Или, может быть, я неправильно понял «Я вставляю свой HTML-код в часть содержимого». - звучит так, как будто вы пытаетесь сделать это в серверной части Drupal в текстовой области. Также стоит отметить, что браузеры иногда автоматически исправляют отсутствующие закрывающие теги, помещая их в неожиданное место.
Одним из простых решений было бы добавить
.medium.styledRadio{display:content;}..display:contentзаставляет дочерние элементы элемента выглядеть так, как если бы они были прямыми дочерними элементами родительского элемента, игнорируя сам элемент. К сожалению, это все еще очень ново и работает не во всех браузерах: caniuse.com/#search=display%3Acontent