访问多个文件中的Java脚本

时间:2019-04-10 作者:StripyTiger

为了使用$访问jquery,我将Javascript文件包装在

 (function($){
  .....
 })(jQuery);
这很好,但我想添加另一个javascript文件,其中包含我想从原始javascript文件调用的函数,但这些函数不可用。

如何调用这些函数?我需要用名称空间或其他东西作为前缀吗?

编辑以下说明。js文件1。

(function($){
    JS2_SayHi();
})(jQuery);
js文件2

(function($){
    function JS2_SayHi()
    {
        alert("Hi");        
    }
})(jQuery);
找不到JS2\\u SayHi函数。如果我删除(函数($){..})(jQuery);JS2的包装器,它确实可以工作,但我没有访问jquery的权限。

2 个回复
SO网友:user3135691

您必须创建dependency 具有

wp_register_script($handle, $src, $dependency, $version, true/false);
参见WP codex:wp_register_script然后确保在初始脚本之后正确加载第二个文件。

第三个参数是依赖项/其他“句柄”的数组。

所以在您的情况下:

<?php
    // Functions.php or somewhere else
    wp_register_script(\'my_first_script\',get_template_directory_uri().\'/js/my-first-script.js\', array(\'jQuery\'), \'1.0\', true);
    wp_register_script(\'my_second_script\',get_template_directory_uri().\'/js/my-second-script.js\', array(\'jQuery\',\'my-first-script\'), \'1.0\', true);
在哪里

...,array(\'jQuery\',\'my-first-script\'),...
是wordpress将为您处理的脚本的依赖项(放置页眉/页脚)。

最后一个参数布尔true 表示加载到页脚中的。还要确保jQuery中的函数具有正确的scoping.

将脚本注册到wordpress,然后将其排队:

<?php
    ...
    wp_enqueue_script(\'my_first_script\');
    wp_enquque_script(\'my-second-script\');

?>

SO网友:Mike Baxter

上面的答案解决了脚本加载问题,但范围问题仍然存在。

首先,在大括号外将函数声明为泛型变量。然后,在大括号内,将函数指定给该变量。在jQuery包装器外部声明函数名可以使其全局可用。

   var say_hi;

    (function($){
        say_hi = function(){
            echo “Hi!”;
        }
    })(jQuery)