-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 代码包装在以下内容中:

;(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>

jsFiddle

对于你的其他问题,试试这个:

<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 回答
3

那是因为$未在您的代码中定义(jQuery.noConflict可能在某处使用过)

只需jQuery用作您的 jQuery 变量

于 2013-08-29T20:21:37.187 回答
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 回答
1
<script type="text/javascript">
jQuery('#room_type').change(function(){
        var location = $(this).val(),
            div = $('#' + location);
        jQuery('div').hide();
        div.show();
});
</script>

将其更改为:

<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:23:14.197 回答