【问题标题】:jQuery typeerror object not a function when grabbing a value from label从标签中获取值时,jQuery typeerror对象不是函数
【发布时间】:2013-04-23 16:56:47
【问题描述】:

我试图简单地从带有 id 的标签中获取一个值。 我有 jQuery 经验,但无法弄清楚为什么我在脚本的第一行不断收到“Uncaught TypeError: object is not a function”错误。

有什么想法吗?

<!DOCTYPE html>
<html>
<head>
    <meta charset='UTF-8' />
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
</head>
<body>
    <div>
        <label id="test">Value</label>
    </div>
    <script>
        jQuery(window).load(function ($) {
            var label = $('#test');
            var prev = label.text();
        });
    </script>
</body>
</html>

提前致谢。

【问题讨论】:

    标签: jquery function object typeerror


    【解决方案1】:

    .load的回调收到的第一个参数是一个事件对象:

    jQuery(window).load(function ($) {
    //                            ^ receives a jQuery event object
    

    您可能会将它与接收jQuery 作为第一个参数的DOM Ready handler 混淆:

    //both of these would have $ as an alias for jQuery:
    jQuery(document).ready(function($){});
    jQuery(function($){});
    

    回到这个问题,有三种方法可以解决它。

    首先,如果$ 在全局范围内,您可以通过从.load 回调(即shadowing 全局$)中删除/重命名$ 参数来轻松解决问题。

    否则,如果 jQuery 处于 noConflict 模式,您可以使用 IIFE 包装器手动为 $ 设置别名:

    (function($) { //aliases jQuery to $ inside this scope
        $(window).load(function() {
            //$ references jQuery in inner scopes too as long as you don't shadow it
            var label = $('#test');
            var prev = label.text();
        });
    }(jQuery));
    

    作为第三种选择,如果您不需要等待 windowload 事件,只需使用 DOM Ready 处理程序即可。 ready 处理程序会更早触发(只要 DOM 结构准备好),而 window.load 必须等待所有资源首先加载(包括图像)。

    大多数时候.ready() 就足够了,不会让用户等到最后一张图片加载完毕后再与您的页面交互。现在,如果您正在处理图像的尺寸或类似的东西,$(window).load() 可能会更有趣。实验看看。

    【讨论】:

    • 非常感谢,就是这样!
    【解决方案2】:

    无需将$ 作为参数传递给您的函数。这样做会创建一个局部变量“$”,它将“隐藏”外部作用域中的 jQuery 对象。

    所以$ 将扮演一个事件的角色(本地$)并且不再是一个函数(外部$),因此你的错误。

    直接调用function(),不带参数,应该没问题。

    【讨论】:

      猜你喜欢
      • 2017-01-24
      • 1970-01-01
      • 2020-12-07
      • 1970-01-01
      • 1970-01-01
      • 2016-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多