jQuery 1.8及更高版本中的类型错误

时间:2013-11-19 15:25:38

标签: javascript jquery

这段代码;

$(function () {
    var tabContainers = $('div.tabs > div');
    tabContainers.hide().filter(':first').show();
        $('div.tabs ul.tabSelect a').click(function () {
        tabContainers.hide();
        tabContainers.filter(this.hash).fadeIn('slow');
        $('div.tabs ul.tabSelect a').removeClass('selected');
        $(this).addClass('selected');
        return false;
    }).filter(':first').click();
});

在jQuery 1.5中工作得很好但是在jQuery 1.10(或1.8)中抛出“类型错误$不是函数”错误

我在这里缺少什么?这不是第一次出现迁移上帝到后来的jQuery版本。

window.jQuery(function () {
        var tabContainers = window.jQuery('div.tabs > div');
        tabContainers.hide().filter(':first').show();

        window.jQuery('div.tabs ul.tabSelect a').click(function () {
            tabContainers.hide();
            tabContainers.filter(this.hash).fadeIn('slow');
            window.jQuery('div.tabs ul.tabSelect a').removeClass('selected');
            window.jQuery(this).addClass('selected');
            return false;
        }).filter(':first').click();
    });

这很好用。没有其他库,只有两个电话 一     <script type='text/javascript' src='http://localhost:8888/wordpress/wp-includes/js/jquery/jquery.js'></script>

是1.10.1并抛出错误

`<script type='text/javascript' src='http://localhost:8888/wordpress/wp-includes/js/jquery/jquery-1.5.1.min.js'></script>`

这是我的问题。如果你不理解它不回答它并且不给我减去声誉,因为你不能费心阅读我的帖子。

3 个答案:

答案 0 :(得分:1)

此错误不是来自jQuery的升级,因为$在当前版本中仍然可用。

检查你不要忘记包含jQuery,文件路径是正常的(使用浏览器的javascript控制台,可通过F12键访问),并且你没有包含jQuery两次(旧版本和新版本一起使用)。

另一个问题可能是代码中某处有jQuery.noConflict();调用。此功能旨在防止不同版本之间的冲突。例如,您可以执行$my_jquery = jQuery.noConflict();,然后以$my_jquery('my_selector')...

的方式使用它

答案 1 :(得分:1)

您错误地加载了库:

  • 在调用脚本之前检查是否已加载lib
  • 检查您是否确实加载了jQuery,而不是部分下载的文件,错误的文件名或控制台上的其他错误。

和/或你正在加载第二个库,它取代了$ global,即Prototype。或者,您已重新分配$ global。

或者您只是使用来自网站的剪切+粘贴代码,并且您复制了一个实际上不是$的类似外观字符,并且计算机不会将其视为此类。

这是你解决这个问题的唯一方法。

答案 2 :(得分:0)

来自jQuery文档。完整而彻底的解决问题。

别名jQuery命名空间

使用其他JavaScript库时,我们可能希望调用$ .noConflict()以避免名称空间困难。调用此函数时,$快捷方式不再可用,每次我们通常写$时都会强制我们编写jQuery。但是,传递给.ready()方法的处理程序可以接受一个参数,该参数传递给全局jQuery对象。这意味着我们可以在.ready()处理程序的上下文中重命名对象,而不会影响其他代码:

jQuery( document ).ready(function( $ ) {
  // Code using $ as usual goes here.
});