#php #html
#php #HTML
Вопрос:
Сайт WordPress.
Я хочу jquery или php, или любое простое решение, которое возьмет div из div id= content (если оно существует) и поместит его в id = iframer div, удалив его в id = content при загрузке.
<div id="iframer">
**/ I am waitting to get "<div class="video">All content </div>" inside me. /**
</div>
<div id="content">
<div class="video">
<iframe width="697" height="392" src="https://www.youtube.com/embed/xxxxxxx?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe>
</div>
</div>
Результат после некоторого скрипта…
<div id="iframer">
<div class="video">
<iframe width="697" height="392" src="https://www.youtube.com/embed/xxxxxxx?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe>
</div>
</div>
<div id="content">
**/ Iframer stolen my content. /**
</div>
Комментарии:
1. почему бы вам просто не добавить его сразу, а не вызывать?
2. Вероятно, потому, что этот HTML сгенерирован WordPress или чем-то еще.
Ответ №1:
Не уверен, почему вы не можете редактировать HTML напрямую или код, который генерирует этот HTML, но вот мое решение с помощью javascript / jQuery.
<script>
//A page can't be manipulated safely until the document is "ready."
$( document ).ready(function() {
//Get the html content inside div with id='content'
var myHtml = $( '#content' ).html();
//Copy the HTML in the div with id='iframer'
$( '#iframer' ).html( myHtml );
//Delete the HTML content inside div with id='content'
$( '#content' ).html( '' );
});
</script>
Комментарии:
1. Хотя это работает отлично, загрузка страницы показывает, что видео переходит из div в div. Есть какое-либо решение для камуфлирования этого?
2. Да, вы можете использовать CSS, чтобы по умолчанию скрыть содержимое div с id =’content’. Но вы все равно увидите всплывающее видео в новом div (не из одного в другой). Лучшим решением было бы иметь контроль непосредственно над базовым исходным кодом, но да, изменить способ работы WordPress может быть сложно.
Ответ №2:
Я бы использовал .detach
и .appendTo
. Таким образом, сохраняются прослушиватели ваших событий, плагины и т.д., Которые привязаны к элементу DOM.
.detach()
Метод такой же, как.remove()
, за исключением того, что.detach()
сохраняет все данные jQuery, связанные с удаленными элементами. Этот метод полезен, когда удаленные элементы должны быть повторно вставлены в DOM позже
$( document ).ready(function() {
$('button').click(function(){
var content = $( '#content > .video' ).detach();
content.appendTo('#iframer');
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="iframer" style="padding:5px; background:#CCC;"></div>
<button>Click</button>
<div id="content">
<div class="video">
Video Content here
</div>
</div>
Я добавил немного цвета фона и что-нет, чтобы сделать его немного более наглядным.
Приветствия!