1

私は cms に wordpress を使用しており、この優れたプラグインAdvanced Custom Fieldsを使用して、いくつかのカスタム フィールドを管理者に追加しています。

私の管理者では、すべてがうまく機能しており、最新のワードプレス 3.8 を使用しています。

わかりましたので、投稿管理の選択ドロップダウンと対話するためのjqueryを追加したいだけです。この選択ドロップダウンは、ACF プラグインによって生成されます。

ACFは、管理パネルのヘッ​​ドにスクリプトと css を追加するための単純なフックを提供します。ここでフックのドキュメントを参照してください

だからここにある...

// WEATHER DATA ICON
function hrc_weather_type_field_icon()
{
    ?>
    <style type="text/css">

        body { display: none !important }   

    </style>

    <script type="text/javascript">
    (function($){



    })(jQuery);
    </script>
    <?php
}
add_action('acf/input/admin_head', 'hrc_weather_type_field_icon');


上記は正常に動作します。ソースを見ると、上記のマークアップが私の<head>

わかりましたが、これを行うと...

// WEATHER DATA ICON
function hrc_weather_type_field_icon()
{
    ?>
    <style type="text/css">



    </style>

    <script type="text/javascript">
    (function($){

        $('body').empty();

    })(jQuery);
    </script>
    <?php
}
add_action('acf/input/admin_head', 'hrc_weather_type_field_icon');


このマークアップは source<head>でまだ確認できますが、スクリプトは実行されません!!!

また、コンソールにはエラーや警告はなく、ページでスクリプトを必要とするものはすべて正常に機能しています。

<body>明らかに、私は自分のものを空にしたくありません.基本的なAPIをテストして、実際にスクリプトを起動させるだけです.

以下のスクリプトは私が最初に試したスクリプトですが、スクリプト自体に問題があると思っていましたが、実際には問題がないことに気づき、他の基本的な jquery API の 、 などをテストし始めましたが、.hide実際.removeには何も起動しません。 !!!

// WEATHER DATA ICON
function hrc_weather_type_field_icon()
{
    ?>
    <style type="text/css">

        /* ... */

    </style>

    <script type="text/javascript">
    (function($){

        $("#acf-field-weather_data_weather").on('change', 'select', function() {
            alert( "Handler for .change() called." );
        });

    })(jQuery);
    </script>
    <?php
}
add_action('acf/input/admin_head', 'hrc_weather_type_field_icon');


なぜこれが起こっているのかについての洞察があれば、私はとても感謝しています:-P

ありがとう

4

2 に答える 2

1

スコープを作成しましたが、doc ready ハンドラーがありません:

(function($){
  $(function(){  //<------this is the doc ready
     $('body').empty();
  });
})(jQuery);
于 2014-01-10T12:59:37.297 に答える
1

jQuery のnoConflict()を使用してみてください。

<script type="text/javascript">
var j = jQuery.noConflict();
j(document).ready(function($) {

    j("#acf-field-weather_data_weather").on('change', 'select', function() {
        alert( "Handler for .change() called." );
    });

});
</script>
于 2014-01-10T12:57:04.907 に答える