如何从外部调用 $(document).ready 中的函数
Posted
技术标签:
【中文标题】如何从外部调用 $(document).ready 中的函数【英文标题】:How to call a function within $(document).ready from outside it 【发布时间】:2011-01-23 16:26:46 【问题描述】:如何从 $(document).ready() 外部调用函数 lol() 例如:
$(document).ready(function()
function lol()
alert('lol');
);
试过了:
$(document).ready(function()
lol();
);
简单地说:
lol();
它必须在外部 javascript 中调用,例如:
function dostuff(url)
lol(); // call the function lol() thats inside the $(document).ready()
【问题讨论】:
【参考方案1】:在定义函数的块之外,它超出了范围,您将无法调用它。
但是没有必要在那里定义函数。为什么不简单:
function lol()
alert("lol");
$(function()
lol(); //works
);
function dostuff(url)
lol(); // also works
您可以像这样全局定义函数:
$(function()
lol = function()
alert("lol");
;
);
$(function()
lol();
);
这可行,但不推荐。如果你要在全局命名空间中定义一些东西,你应该使用第一种方法。
【讨论】:
我认为在第二个示例中尝试定义全局函数时,为避免歧义,您可以使用:window['lol'] = function() /* body of the function */ ;
。
verrrrrrrrrrrry gooooooooooooooood this【参考方案2】:
短版:你不能,它超出了范围。像这样定义您的方法,使其可用:
function lol()
alert('lol');
$(function()
lol();
);
【讨论】:
【参考方案3】:在窗口对象上定义函数,使其在另一个函数范围内成为全局函数:
$(document).ready(function()
window.lol = function()
alert('lol');
);
【讨论】:
这是一个很棒的解决方案,节省了我几个小时! 在我找到的所有令人困惑或复杂的答案中,这是唯一对我有用的东西。【参考方案4】:如果使用 jQuery 安装 Prototype 并且我们为 jQuery 设置了 noconflicts 会怎样?
jQuery(document).ready(function($)
window.lol = function()
$.('#funnyThat').html("LOL");
);
现在我们可以从任何地方调用 lol,但我们是否引入了与 Prototype 的冲突?
【讨论】:
【参考方案5】:你不需要而且——如果一个函数是在 Document.Ready 之外定义的——但你想调用它 Document.Ready——你就是这样做的——这些答案把我引向了错误的方向,不要再次输入函数,只需输入函数的名称即可。
$(document).ready(function ()
fnGetContent();
);
fnGetContent 在这里:
function fnGetContent(keyword)
var NewKeyword = keyword.tag;
var type = keyword.type;
$.ajax( .......
【讨论】:
这是在回答实际问题的反面,但没有被否决,因为它对那些寻求它的人来说仍然有些帮助。 我投了反对票,因为它没有回答问题以上是关于如何从外部调用 $(document).ready 中的函数的主要内容,如果未能解决你的问题,请参考以下文章
jquery代码如何写到外部js中 为啥 在外部js中 写上 $(document).ready(function();就报错
从 JQuery.load ajax 调用添加到 DOM 的 document.ready 事件的预期行为是啥?