注册/排队脚本

Register / Enqueue Scripts

本文关键字:脚本 排队 注册      更新时间:2023-09-26

我想整洁,把所有的JS进入。JS文件和注册和排队。到目前为止,我在这方面取得了"巨大"的成功。我在我的functions。php主题中有:

wp_register_script( 'myscript', get_stylesheet_directory_uri() . '/js/jquery.myscripts.js', array( 'some-other-script' ), '1.0.6', true );
像这样的脚本是在JS脚本之后调用的,JS脚本正在创建DOM,我希望在我的JS文件中使用。在我的网站来源中看起来不错:
<script type="text/javascript" src="http://example.com/wp-content/plugins/some-other-plugin/lib/some-other-plugin/some-other-script.js?ver=3.2.2"></script>
<script type="text/javascript" src="http://example.com/wp-content/themes/some-theme/js/jquery.myscript.js?ver=1.0.5"></script>

在我的问题页面的模板文件中,我添加了:

<?php wp_enqueue_script( 'myscript' ); ?>

这是我的JS代码,它仍然打印"检测到足够小的窗口",但之后不执行任何代码。

var bMenuVisible = true;
jQuery(function ($) {   
    $( document ).ready(function() {
    if( $( window ).width() < 850 ){
        console.log( "Detected small enough window" );
        $( ".someClass" ).click(function() {
            console.log( "Clickedy Click" );
            if (bMenuVisible == true) {
                $( ".some-other-class" ).fadeOut( "slow", function() {
                    console.log( "fading out!" );
                });
                bMenuVisible = false;
            }
            else {
                $( ".some-other-class" ).fadeIn( "slow", function() {                       
                    console.log( "fading in!" );
                }); 
                bMenuVisible = true;    
            }
        });
    }

现在到与WP相关的问题,当我将代码添加到页面本身的模板中时,它像一个魅力一样工作,但是一旦我将其注册为脚本并在同一地点排队,它就停止工作/可能停止看到DOM。所以我不禁想知道我是否在注册和排队时做错了什么?


我已经改变了JS看起来如下方式,没有anno函数和一些更好的分离,仍然不工作,虽然:(

var bMenuVisible = true;
function myApp () {
jQuery('.royalSlider').royalSlider('updateSliderSize', true);
console.log( "ready!" );
console.log( "Window width: " + jQuery( window ).width());
if( jQuery( window ).width() < 850 ){
    console.log( "Detected small enough window" );
    jQuery( ".someClass" ).click(function() {
        console.log( "Clickedy Click" );
        console.log( jQuery( document ).ready() );
        if (bMenuVisible == true) {
            jQuery( ".some-other-class" ).fadeOut( "slow", function() {
                console.log( "fading out!" );
            });
            bMenuVisible = false;
        }
        else {
            jQuery( ".some-other-class" ).fadeIn( "slow", function() {                      
                console.log( "fading in!" );
            });
            bMenuVisible = true;    
        }
    });
 }              
}
jQuery( document ).ready( myApp );

阅读这篇文章:http://lostechies.com/derickbailey/2012/05/22/function%E2%80%A6-vs-function%E2%80%A6-or-domready-vs-the-module-pattern/

问题很可能是:

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

我不明白调用匿名函数等待DOM准备好有什么意义