0

我有 2 个.js文件,第一个是plugins.js和,第二个是ui.js,并且两者都在检查器的“调试”中可见,因此都包含在内。

我有一个 jquery 函数,plugins.js因为我需要调用 in ui.js,所以我plugins.js先入队,然后紧接着我入队ui.js

但是,网络浏览器中的控制台告诉我该函数未定义,并且它不起作用。

如果我将函数剪切并粘贴plugins.jsui.js. 当我在 JSfiddle 中尝试它时它也有效。

functions.php

function add_scripts() { 

wp_enqueue_script( 'plugins', get_template_directory_uri() . '/javascript/plugins.js', array( 'jquery', 'jquery-ui-core' )           , '1.0.0', true );
wp_enqueue_script( 'ui'     , get_template_directory_uri() . '/javascript/ui.js'     , array(), '1.0.0', true );
}
add_action('wp_enqueue_scripts', 'add_scripts');

plugins.js

jQuery(document).ready(function($) {
    function PNGPreloader(e,t,i,r,n,a){...}
});

ui.js

jQuery(document).ready(function($) {
    $(...).each(function(){
        mobileIcons[ID] = new PNGPreloader($object,frames,size[0],size[1],20,false);
    });

如果我将函数从plugins.jsin 中放入,它会起作用ui.js

jQuery(document).ready(function($) {
    function PNGPreloader(e,t,i,r,n,a){...}
    $(...).each(function(){
        ... = new PNGPreloader(...);
});
4

2 回答 2

2

应该添加jquery-ui-widget到的依赖项参数中wp_enqueue_script

function stripesinteriors_theme_resources() { 
    wp_enqueue_script( 'plugins', get_template_directory_uri() . '/javascript/plugins.js', array( 'jquery', 'jquery-ui-core', 'jquery-ui-widget' ), '1.0.0', true );
    wp_enqueue_script( 'ui'     , get_template_directory_uri() . '/javascript/ui.js'     , array()                                                , '1.0.0', true );
}
于 2019-01-26T11:51:22.357 回答
1

你能把你function PNGPreloader(e,t,i,r,n,a){...}的移出jQuery(document).ready(function($) { ... });街区吗?

这是一个范围问题,因为 ui.js 中的代码对 plugins.js 中的 document-ready 调用的函数内部的任何内容都没有可见性。

或者您也可以执行以下操作:

插件.js:

var fnPNGPreloader;  // globally accessible

jQuery(document).ready(function($) {
    fnPNGPreloader = function (e,t,i,r,n,a) {
        /*.. assuming you do stuff with "$" in here ..*/
    };
    //...
});

ui.js:

jQuery(document).ready(function($) {
    $(...).each(function(){
        mobileIcons[ID] = new fnPNGPreloader($object,frames,size[0],size[1],20,false);
    });
});
于 2019-01-26T10:25:10.443 回答