2016-09-13 31 views
1

我正在尝试加载我的CSS异步,因此我所做的是对所有css样式执行的操作如下所示:我将它们加载为media = none并且加载页面后,我使用jQuery将attr值更改为media = allWordPress jQuery仅在刷新后才会触发

问题,我不断得到,我似乎无法解决的是,这只适用于我刷新页面后。在第一次加载时,我得到的是Uncaught ReferenceError: jQuery is not defined

此外,当我导航到下一页时,我需要再次刷新jQuery才能触发。

我在Word新闻工作,所以这是我在做什么:

的functions.php

function wpic_theme_js(){ 
    wp_deregister_script('jquery'); 
    wp_deregister_script('jquery-migrate'); 
    wp_register_script('jquery', 'https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js', array(), '', false); 
    wp_enqueue_script('jquery'); 
    wp_enqueue_script('app_js', get_template_directory_uri() . '/js/app.min.js', array('jquery'), '', true); 
} 
add_action('wp_enqueue_scripts', 'wpic_theme_js'); 

在我jQuery脚本我有这样的:

jQuery(document).ready(function($){ 

    jQuery('link[media="none"]').each(function(){ 
     jQuery(this).attr('media', 'all'); 
    }); 

也如你所知我有deregistered jquery-migrate出于同样的原因我得到jQuery is not defined错误。

如果有人有这个解决方案,我将不胜感激帮助。

感谢

PS> 我正在进步一点点在这里,我注意到,jQuery是不完全加载。看起来像jQuery库和我的app.js文件几乎完全相同的时间加载。所以,当它触发jQuery是没有定义尚未..

网址:http://iamcavic.com/

我得到它的工作,但我现在已经闪烁:(

+0

你在调用之前加载Jquery吗? –

+1

@JotaGe你可以在他的代码中看到他是... – Lee

+0

确保你的脚本应该被写入/包含在jquery后 –

回答

0

嗯,这显然是错误的做法所有的jQuery。在WordPress动作需要通过管理-ajax.php被转移并引发。

它是由名字有点误导,但这个文件是负责做AJAX请求传递给后台/主题/。

一谷歌搜索: https://codex.wordpress.org/AJAX_in_Plugins

+1

我不遵循你为什么要链接到这篇文章,因为我没有在我的项目中的任何地方使用AJAX ?另外我的功能是网站的核心功能,不仅仅是管理区域。请澄清我是否误解了你的答案。谢谢 – IamCavic

+0

由于您正在执行异步操作,因此会触发内部WordPress过滤/限制。 WordPress不会允许你在我给你的方法之外触发ajax请求。换句话说:你必须这样做Ajax请求,没有办法 - 至少不是我所知道的。 –

+0

@ user2521387问题不要求ajax调用他只是运行一个简单的jQuery –

相关问题