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方法也可以工作,但它有点像黑客。如果你养成了一种习惯,用足够多的此类黑客来编写代码,那么你的代码将变得不易维护,最终会因为一些奇怪的、不太明显的原因而出现错误。快乐编码。