Инициализация Visual Composer при загрузке содержимого Ajax

Базовая структура ниже, есть сценарий ajax, который заменяет внутреннее содержимое div и обновляет меню, выдвигает состояния истории, постепенное появление / исчезновение содержимого и т. Д.

Внутреннее содержимое содержит строку базовой сетки, а содержимое редактора Wordpress находится внутри этого контейнера.

Теперь вот проблема ... при использовании любой функции визуального композитора, для которой требуются триггеры javascript, полный диапазон ширины, слайдер, анимация, ничего не загружается снова, когда моя функция ajax запускает замену содержимого.

Вот часть моего кода, который загружается после того, как ajax получил содержимое.

// Update the content
$content.stop(true,true);
//$("[data-vc-grid-settings]").vcGrid();
$('#content').foundation();
$content.html(contentHtml).ajaxify().css('opacity',100).show(); /* you could fade in here if you'd like */

// Update the title
document.title = $data.find('.document-title:first').text();

Я думал, что .vcGrid() был правильным инициализацией, но получил не определенную ошибку консоли. Где я могу найти документы, связанные с повторной инициализацией элементов визуального композитора?

<html>
<header>
Meta Content
</header>
<div off-canvus>
   <menu></menu>
   <div content>
      <div inner-content>

      </div>
   </div>
   <footer>
   </footer>
   <scripts>
</html>

person vico    schedule 17.01.2017    source источник


Ответы (2)


чтобы добавить пользовательскую логику javascript после загрузки сетки визуального композитора, сделайте это следующим образом:

$(window).bind( 'grid:items:added', function(){ 
  // add some logic here
});

подробнее см. этот вопрос => здесь

person Kresimir Pendic    schedule 22.01.2018

Нашел данные, которые мне нужны после копания в javascript визуального композитора, добавил действие изменения размера для окна, которое запускает сетку визуального композитора для правильной работы.

$content.stop(true,true);
window.vc_js();
window.resize();
$('#content').foundation();
$content.html(contentHtml).ajaxify().css('opacity',100).show(); /* you could fade in here if you'd like */

// Update the title
document.title = $data.find('.document-title:first').text();
try {
    document.getElementsByTagName('title')[0].innerHTML = document.title.replace('<','&lt;').replace('>','&gt;').replace(' & ',' &amp; ');
}
catch ( Exception ) { }
person vico    schedule 18.01.2017
comment
Я знаю, что уже поздно спрашивать, но у меня та же проблема, и ваш код у меня не работает. Я получаю сообщение об ошибке window.resize() не является функцией. также пробовал jQuery([data-vc-grid-settings]).vcGrid(); и дает vcGrid не является функцией - person ; 09.06.2017
comment
@buxbeatz вы загружаете свой код до загрузки других ресурсов. - person vico; 29.01.2018