关于自定义主题的Javascipt问题

时间:2016-01-07 作者:Chad J Treadway

首先,我似乎总是很难让我的JS与WP一起工作。目前,我需要一些帮助来找出我的javascript出了什么问题,以及我到底做错了什么。我有以下代码:

(function($) {

    // This works on WP site and on CodePen
    // $("p.click-me").click(function(){
    //      alert("The paragraph was clicked.");
    // });

    // Masonry Code  
    $(\'#posts\').masonry({
          itemSelector : \'.item\'
        });
    $(\'#main #posts\').masonry({
          itemSelector : \'.item\'
        });

    // This works on CodePen but not on WP site
    $("p.click-me").click(function(){
        alert("The paragraph was clicked.");
    });

})(jQuery);
砌体脚本通过函数文件排队,如下所示:

wp_enqueue_script( \'ccd-jquery\', ‘//cdnjs.cloudflare.com/ajax/libs/masonry/3.3.2/masonry.pkgd.min.js\',true);
接下来是我的脚本:

wp_enqueue_script( \'ccd-javascripts\', get_template_directory_uri().’/js/ccd-javascripts.js\',array(),\'1.0\',true);
如果我在砌体代码上方发出警报,它就会工作,但是如果我在下方发出警报,它就不会出现在Wordpress网站上。但是在我的CodePen, 这两种方式都会奏效。

有人能帮我解释一下我做错了什么以及如何解决这个问题吗?

--Update-- 根据cybmeta的反馈,我将我的排队修改为:

wp_enqueue_style( \'template-css\', get_template_directory_uri().\'/css/template.css\');

//CDN Load
wp_enqueue_script( \'ccd-bootstrap\', \'//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.6/js/bootstrap.min.js\', array(\'jquery\') ,true);
wp_enqueue_script( \'ccd-respond\', \'//cdnjs.cloudflare.com/ajax/libs/respond.js/1.4.2/respond.min.js\', array(\'jquery\') ,true);
// wp_enqueue_script( \'ccd-jquery\', \'//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js\',true); //Not using this since WP loads already

// Masonry script depends on jQuery (already registered by WordPress)
wp_enqueue_script( \'masonry\', \'//cdnjs.cloudflare.com/ajax/libs/masonry/3.3.2/masonry.pkgd.min.js\', array(\'jquery\') );

// ccd-javascripts depends on jQuery and the "masonry" script
wp_enqueue_script( \'ccd-javascripts\', get_template_directory_uri().\'/js/ccd-javascripts.js\', array(\'jquery\', \'masonry\'));
但它在WP站点上仍然不能正常工作。它不做它应该做的事情,而是将它们全部堆叠在一列中。更改列的宽度无效。

1 个回复
SO网友:cybmeta

你知道JavaScript依赖关系吗?如果某些JavaScript依赖于另一个JavaScript,则必须在依赖项之后加载它。

在代码笔中,您正在按正确的顺序加载JavaScripts:

WordPress的一个特性是JavaScript和CSS的依赖关系管理器。但你没有使用它。的第三个参数wp_enqueue_script() 在这里,您可以声明脚本的依赖项,WordPress将按正确的顺序加载它们:

// Masonry script depends on jQuery (already registered by WordPress)
wp_enqueue_script( \'masonry\', \'//cdnjs.cloudflare.com/ajax/libs/masonry/3.3.2/masonry.pkgd.min.js\', array(\'jquery\') );

// ccd-javascripts depends on jQuery and the "masonry" script
wp_enqueue_script( \'ccd-javascripts\', get_template_directory_uri().\'/js/ccd-javascripts.js\', array( \'jquery\', \'masonry\' ) );

相关推荐

JQuery php请求返回一个奇怪的结果

我有一个奇怪的小故障发生在我身上,我不知道我是如何产生它的,或者它是否是正常的。我正在开发自己的插件,当一个足球队/足球队被输入到一个框中时,它会检查它是否已经在数据库中。以下是我的代码行add_action( \'admin_footer\', \'fws_teamcheck_javascript\' ); function fws_teamcheck_javascript() { ?> <script type="text/javascript">