-1

wordpress 内で単純なコードを使用すると、次のエラーが発生します。この問題を解決する方法はありますか?

エラー:

Uncaught TypeError: Property '$' of object [object Object] is not a function 
(anonymous function) 
x.event.dispatch
v.handle

Javascript:

<script type="text/javascript">
jQuery('#room_type').change(function(){
        var location = $(this).val(),
            div = $('#' + location);
        jQuery('div').hide();
        div.show();
});
</script>

HTML:

<select id="room_type">
    <option value="">-- Type --</option>
    <option value="oneroom">One room</option>
    <option value="tworoom">Two room</option>
</select>

<div id="oneroom" style="display:none">
    CONTENT 1
</div>
<div id="tworoom" style="display:none">
    CONTENT 2
</div>
4

5 に答える 5

3

これは$、コードで定義されていないためです (jQuery.noConflictおそらくどこかで使用されていました) 。

jQueryjQuery変数として使用するだけです

于 2013-08-29T20:21:37.187 に答える
3

関数と jQuery コードを次のようにラップします。

;(function ($) {

    //Code in here

})(jQuery);

$これにより、が jQuery のみに割り当てられます。これを行うことで、$. また、このコードの先頭に aを付けると;、関数が閉じられていないスクリプトから保護されます。noConflict()メソッドに頼るつもりはありません。

<script type="text/javascript">
;(function ($) {
    $('#room_type').change(function(){
        var location = $(this).val(),
            div = $('#' + location);
        $('div').hide();
        div.show();
    });
})(jQuery);
</script>

jsフィドル

他の問題については、これを試してください:

<script type="text/javascript">
;(function ($) {
    $('#room_type').change(function(){
        var location = $(this).val(),
            div = $('#' + location);
        $("div[id$='room']").hide();
        div.show();
    });
})(jQuery);
</script>
于 2013-08-29T20:20:02.047 に答える
2

jQuery.noConflict$が呼び出された可能性が高いため、最初にエイリアスを設定しないと短縮形を使用できません。

これは多くの場合、次のように行われます。

(function ($) {//jQuery is now stored as the `$` parameter in this function
    ...code here...
}(jQuery));

あるいは、document.ready に対しては、エイリアスの短縮形を使用できます。

jQuery(function ($) {
   //this code will execute on DOM ready and the `$` parameter will be set
    ...code here...
});

または、関数として使用するのをやめて$(...)、より冗長なものに置き換えますjQuery(...)

jQuery('#room_type').change(function(){
    var location = jQuery(this).val(),
        div = jQuery('#' + location);
    jQuery('div').hide();
    div.show();
});
于 2013-08-29T20:21:52.953 に答える
1

Jonny Sooter が言ったことを実行するか、好きなように変更$jQueryます。

<script type="text/javascript">
jQuery('#room_type').change(function(){
    var location = jQuery(this).val(),
        div = jQuery('#' + location);
    jQuery('div').hide();
    div.show();
});
</script>
于 2013-08-29T20:22:52.263 に答える