在 ajax 调用后重新加载视觉作曲家网格

reload visual composer grid after ajax call

我目前正在 wordpress 主题中实现 barba.js。除了 VisualComposer 网格之外,我已经设法使大多数 javascript 功能在页面更改后正常工作。

正在阅读 线程 我已经通过 window.vc_js();

设法使 Visual composer 的基本功能正常工作,但网格除外

如果我添加 window.resize();,我会收到 window.resize is not a function 错误。

在相当多的页面中,我也遇到了与 window.vc_js() - window.vc_js is not a function

相同的错误

如何初始化 vc_grid? 为什么在 Visual composer 实际处于活动状态时出现这些错误?

感谢任何帮助

tl;博士

将您的自定义 javascript 代码放在这里:

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

如果你需要在 Visual Composer 网格加载后做一些逻辑,那么就这样做吧(我从某个网站粘贴我的代码):

// catch VISUAL COMPOSER AFTER GRID ITEMS ARE LOADED .. hook and update date strings,, ONCE!
$(window).bind( 'grid:items:added', function(){
    if ( ! $( 'body' ).attr('masonicaDone' ) == "1" ){
        $('.enddate, .startdate').each( function(ix, el){
            var tmm = sDate( TIME( $(el).text().trim() ), lang ) + ' ∙ ' + sTime( TIME( $(el).text().trim() ), lang  );
            $(el).text( tmm );
        });
        $( 'body' ).attr('masonicaDone', 1);
    }
});

主要是 bind'grid:items:added' 事件,该事件在 ajax 数据传输后运行,在我的示例中,我将日期格式化为本地格式(而不是原生 php 日期格式,WP)

此外,非常重要的是添加某种标志(我在 body 上)不要再做一次(我最终会格式化日期字符串两次并有错误),但只是第一次(在 ajax 之后)。请注意,点击过滤器按钮(大多数时候是投资组合类别)时会触发相同的事件,谁知道也许还有一些转换......