Удалить оболочку div

У меня небольшой вопрос. Наше агентство работает с 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(&quot;/assets/img/sprite-radiobuttons-medium.png&quot;); 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", которое я могу добавить в эту часть содержимого.

Одним из простых решений было бы добавить .medium.styledRadio{display:content;}.. display:content заставляет дочерние элементы элемента выглядеть так, как если бы они были прямыми дочерними элементами родительского элемента, игнорируя сам элемент. К сожалению, это все еще очень ново и работает не во всех браузерах: caniuse.com/#search=display%3Acontent

enxaneta 29.10.2018 11:21

!! Правильная ссылка - надеюсь поможет: SO - Удаление обертки div без JQuery (необработанный javascript)

Matt 29.10.2018 11:46
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
2
467
2

Ответы 2

Дополнительный 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 в текстовой области. Также стоит отметить, что браузеры иногда автоматически исправляют отсутствующие закрывающие теги, помещая их в неожиданное место.

leymannx 30.10.2018 00:17

Другие вопросы по теме