jQuery有时以正确的顺序加载,有时则不加载

时间:2015-10-15 20:05:08

标签: javascript jquery wordpress

我有一个运行Master Slider Pro wordpress插件和iLightBox插件的网站。我在wordpress子主题的custom.js文件中运行自定义脚本:

/* Link JavaScript file */
function custom_scripts() {
    wp_register_script( 'custom-script', get_stylesheet_directory_uri() . '/assets/js/custom.js', array('jquery') , false, true );
    wp_enqueue_script( 'custom-script' );
}

我在我的functions.php文件中调用自定义文件:

jQuery(document).ready(function(){

    (function(){
      var groupsArr = [];
      jQuery('[rel^="ilightbox["]').each(function () {
        var group = this.getAttribute("rel");
        jQuery.inArray(group, groupsArr) === -1 && groupsArr.push(group);
      });
      jQuery.each(groupsArr, function (i, groupName) {
        jQuery('[rel="' + groupName + '"]').iLightBox({ /* options */ });
      });
    })();

  });

我遇到的问题是,有时它加载自定义脚本(我假设按正确的顺序)并且我的滑块加载并且当我单击图像时灯箱显示...其他时候滑块卡在加载状态并显示错误:

Uncaught TypeError: jQuery(...).iLightBox is not a function

我相信我在加载jQuery文件后加载custom.js文件...我假设的是,lighbox插件有时会在jQuery之后加载,因此在custom.js文件之后加载这就是为什么它找不到暮光之城功能?

无论如何我可以阻止这个?

更新 还在和这些家伙挣扎。我一直在做一些阅读并与我的主题作者(已经整合了暮光之城功能)进行了交谈。

我的代码现在如下所示:

/* register script that defines ilightbox (in parent theme) */
wp_register_script( 'ilightbox_script', get_stylesheet_directory . '/includes/class-avada-scripts.php' );

/* Link JavaScript file */
function custom_scripts() {
    wp_register_script( 'custom-script', get_stylesheet_directory_uri() . '/assets/js/custom.js', array('jquery', 'ilightbox_script') , false, true );
    wp_enqueue_script( 'custom-script' );
}

add_action( 'wp_enqueue_scripts', 'custom_scripts', 99 );

我相信我现在已经注册了包含ilightbox功能的脚本(存储在我的父主题中)。然后我在jQuery之后调用了custom.js文件并且加载了已注册的脚本。但它仍然无法正常工作。我也从我正在尝试注册的文件中收到以下错误:

Uncaught SyntaxError: Unexpected token <

也许我误解了一切,所以我复制了主题作者对我说的话,当我问到哪个罚款定义了暮光之城功能时......你觉得怎么样?

  

这些脚本在class-avada-scripts.php中排队   以下目录

     

/可湿性粉剂内容/主题/阿瓦达索/包括

     

并且所有JS代码都在main.min.js中,可在以下目录中找到

     

/可湿性粉剂内容/主题/阿瓦达索/资产/ JS

     

但是,如果您从

启用开发者模式      

Wp admin - &gt;外观 - &gt;主题选项 - &gt;先进

     

然后你可以修改avada-lightbox.js和lightbox.js中的代码   可在同一目录中找到。

1 个答案:

答案 0 :(得分:-1)

您需要加载脚本并将jQuery添加为依赖项:

// Enqueue a script that has both jQuery (automatically registered by WordPress)
// and my-script (registered earlier) as dependencies.
wp_enqueue_script( 'my-careers-script', get_stylesheet_directory_uri() . '/js/my-careers-script.js', array( 'jquery', 'my-script' ) );

从WordPress Codex链接:https://codex.wordpress.org/Function_Reference/wp_register_script#Example_of_Automatic_Dependency_Loading