2015-10-15 62 views
0

我有一个运行Master Slider Pro wordpress插件和iLightBox插件的网站。我在WordPress的儿童主题运行在custom.js文件的自定义脚本:jQuery有时按正确的顺序加载,有时它不会

/* 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文件,这就是为什么它不能找到ilightbox功能?

无论如何,我可以防止这个?


UPDATE: 这个家伙不断挣扎。我一直在做一些阅读并与我的主题作者交谈(他整合了ilightbox功能)。

我的代码现在看起来像下面:

/* 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 < 

也许我误会了一切,所以我抄什么主题笔者对我说,当我问其中精定义ilightbox功能.. 你怎么看?

这些脚本在以下目录

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

和所有的JS代码类阿瓦达索-scripts.php在 可排队是main.min在下面的目录

可用的.js

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

但是如果从

0123使开发者模式

Wp的管理 - >外观 - >主题选项 - >高级

,那么你可以修改阿瓦达索-lightbox.js代码和lightbox.js 在同一目录中。

+0

你是如何入队的灯箱插件? 'iLightBox'不包含在核心jQuery中......所以你需要包含其他相关的脚本。如果您将它作为插件的一部分包含在内,请查找该脚本已注册的名称,并将其添加到* custom.js *依赖项的数组中(例如'array('jquery','ilightbox_whatever')') – rnevius

+0

请看原始信息我的更新 – user3290060

回答

-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的法典链接:https://codex.wordpress.org/Function_Reference/wp_register_script#Example_of_Automatic_Dependency_Loading

+0

请查看我对原始信息的更新 – user3290060

相关问题