使用wordpress中的NextGen Gallery插件运行幻灯片时出现JQuery错误

时间:2017-06-12 10:28:12

标签: javascript jquery wordpress nextgen-gallery

我在NextGen Gallary插件中添加了幻灯片后Chrome中的错误代码。 Sildeshow页面中的错误部分?我找不到这个页面.. 在页脚中附加了jQuery i链接。是什么东西与我的jQuery文件冲突?

请参阅附图和代码screenshot of error

JQMIGRATE: Migrate is installed, version 1.4.1
slideshow:212 Uncaught TypeError: jQuery(...).nggShowSlideshow is not a function
    at HTMLDocument.<anonymous> (slideshow:212)
    at i (jquery.js?ver=1.12.4:2)
    at Object.fireWith [as resolveWith] (jquery.js?ver=1.12.4:2)
    at Function.ready (jquery.js?ver=1.12.4:2)
    at HTMLDocument.K (jquery.js?ver=1.12.4:2)
(anonymous) @ slideshow:212
i @ jquery.js?ver=1.12.4:2
fireWith @ jquery.js?ver=1.12.4:2
ready @ jquery.js?ver=1.12.4:2
K @ jquery.js?ver=1.12.4:2

<script type="text/javascript">
jQuery('#ngg-slideshow-8c3cff8f8dc2fd0d87b86cbcbb01a9eb-207510-image-list').hide().removeClass('ngg-slideshow-nojs');
jQuery(function($) {
    jQuery('#ngg-slideshow-8c3cff8f8dc2fd0d87b86cbcbb01a9eb-207510').nggShowSlideshow({
        id: '8c3cff8f8dc2fd0d87b86cbcbb01a9eb',
        fx: 'fade',
        width: 1000,
        height: 600,
        domain: 'https://localhost/marc1/',
        timeout: 10000      });

<script type="text/javascript">
    jQuery('#ngg-slideshow-8c3cff8f8dc2fd0d87b86cbcbb01a9eb-207510-image-list').hide().removeClass('ngg-slideshow-nojs');
    jQuery(function($) {
        jQuery('#ngg-slideshow-8c3cff8f8dc2fd0d87b86cbcbb01a9eb-207510').nggShowSlideshow({
            id: '8c3cff8f8dc2fd0d87b86cbcbb01a9eb',
            fx: 'fade',
            width: 1000,
            height: 600,
            domain: 'https://localhost/marc1/',
            timeout: 10000      });

1 个答案:

答案 0 :(得分:0)

这种类型的错误通常可以通过在加载JQuery本身之前运行的JQuery插件(脚本)来实现。从您的屏幕截图中,您可以直接手动将脚本添加到页面模板中。

在WordPress中,JQuery脚本应始终由wp_enqueue_script钩子加载,并使用JQuery依赖项进行设置。

wp_enqueue_script( string $handle, string $src = '', array $deps = array(), string|bool|null $ver = false, bool $in_footer = false )

例如:

function load_my_script_SO44497195(){
    wp_register_script( 
        'my_script', 
        get_template_directory_uri() . '/js/myscript.js', 
        array( 'jquery' )
    );
    wp_enqueue_script( 'my_script' );
}
add_action('wp_enqueue_scripts', 'load_my_script_SO44497195');

但是,如果您真的必须通过html手动加载脚本,则应将此代码包装在

// A $( document ).ready() block.
$( document ).ready(function() {
    console.log( "ready!" );
});

或者至少将脚本放在页脚中,以便为JQuery提供每次加载的机会。但是,你真的应该只排队脚本。

所有这一切都是猜测因为我只是让你的屏幕截图关闭。如果我们可以访问实时网站,那将更容易。

此外,在您提出的问题的代码块中,您有相同的脚本加载两次,而且关闭脚本标记</script>似乎不仅不必要,而且可能导致问题。首先对此进行两次排序,因为它可能是问题的根源。