Javascript 为什么我的全局自定义jQuery函数没有被调用?

Javascript 为什么我的全局自定义jQuery函数没有被调用?,javascript,jquery,Javascript,Jquery,如果我在脚本之后直接调用它,请使用: $.custom.test(); 它按预期工作。但是,如果我把它放在HTML中的任何地方,它都不会启动。我在jQuery中定义了我的对象,这不应该在页面中的任何地方都可以访问吗?请参阅解决方案:您需要定义自定义函数才能使用它。 像这样: <script> $.custom = { test : function() { alert("wtf"); } }; </s

如果我在脚本之后直接调用它,请使用:

$.custom.test();
它按预期工作。但是,如果我把它放在HTML中的任何地方,它都不会启动。我在jQuery中定义了我的对象,这不应该在页面中的任何地方都可以访问吗?

请参阅解决方案:您需要定义自定义函数才能使用它。 像这样:

  <script>

        $.custom = {
              test : function() { alert("wtf"); }
        };

    </script>

    <div id="helloworld" style="border:solid; border-width:5px;">
        BLAH
    </div>
    <script>
        $.custom.test();
    </script>

$。自定义={
测试:函数(){alert(“wtf”);}
};
废话
$.custom.test();

在加载脚本后,您正在将脚本添加到页面中,但在加载脚本之前,请先将脚本invoce
$.custom.test()


将此选项更改为
no wrap(head)
,如果您无法按照@frenchie建议的方式定义函数,它将正常工作。

,请尝试:

    setTimeout(function(){$.custom.test();}, 0);


为什么要给jQuery全局分配任何内容?

您可能应该在实际页面上进行测试。它不起作用,因为您让JSFIDLE在
窗口上运行代码。onload
,因此
中嵌入的任何代码在
$时都已尝试运行。自定义
已定义。是的,你的jsfiddle示例是“坏的”-这一个正在工作-你的标题是三重否定的…我在我的实际页面上测试过,它的行为与jsFiddler完全相同。这就是为什么我迷路了……我确信他的问题不是他不能让他的函数在JSFIDLE中工作;他的函数在他的页面中不起作用,因为他没有在正确的位置定义它。当然。。所以只需将函数定义移到调用的上方。。想法是一样的!我的真实页面(不是jsfiddler)的函数定义已经在调用上面了。。。它仍然不能回答我的问题,我确实需要它在onLoad时获取触发器。很明显,我需要小心,这就是我所需要的。由于我的内容是动态加载的,我不能将其设置为“no wrap(head)”,我需要它来处理onLoad行为。这是我最初的方式,当然可以,但我不能在同一页面中声明所有内容。我的JS函数将有自己的代码可维护性文件。我目前正在我的jsp页面顶部导入它。你的解决方案肯定有效,但不是我想要的;像这样:。换句话说,用指向.js文件的链接替换$.custom;就是这样做的。是的,setTimeout方法也可以工作,但它有点像黑客。如果你养成了一种习惯,用足够多的此类黑客来编写代码,那么你的代码将变得不易维护,最终会因为一些奇怪的、不太明显的原因而出现错误。快乐编码。