准备好jQuery文档中的调用函数

Posted

技术标签:

【中文标题】准备好jQuery文档中的调用函数【英文标题】:Calling function inside jQuery document ready 【发布时间】:2011-12-29 20:10:19 【问题描述】:

在调试时,我总是使用 Firebug 并尝试调用函数并显示变量。但是,当函数或变量在 $(document).ready 中定义时,我不能。

如何访问这些变量?我可以输入命名空间之类的内容,例如document.ready.variableName,或者我怎么能看到这个?

提前谢谢你。

【问题讨论】:

【参考方案1】:

全局变量和函数可以通过将它们分配为window的属性来创建:

$(function()
    window.foo = function foo() 
        // …
    
);

foo() 应该在该处理程序执行后的任何地方都可以访问。

【讨论】:

【参考方案2】:

如何访问这些变量?

嗯,你不能。您在匿名函数中定义的所有内容(例如您在 $(document).ready 中使用的内容)都将作用于该匿名函数。它是私有的,外部无法访问。

因此,如果您需要检查在其范围内定义的某些私有变量,您可以将您的 console.log 放在 $(document).ready 中。

【讨论】:

我可以像使用变量一样定义窗口函数,如“window.variableName = string”吗? @KennethB,当然,由您决定变量的范围。你总是可以写 window.foo = ... 然后检查 window.foo 因为 window 对象是公共的并且代表全局范围。 是的,我知道。但是我可以用函数做同样的事情吗? @KennethB,当然,window.foo = function() alert('bar'); ;。然后window.foo();.【参考方案3】:

这就是调试的目的。在所有主流浏览器(包括 IE)中,您都可以在 javascript 代码中设置断点。完成后,脚本会停止,您可以检查变量。

这里有一些链接:

http://getfirebug.com/javascript http://www.jonathanboutelle.com/how-to-debug-javascript-in-internet-explorer How do you launch the JavaScript debugger in Google Chrome?

【讨论】:

致对我投反对票的那个人。请留下评论并说明原因。 这至少没有直接回答问题。他想知道 1 - 如何访问在 .ready() 函数中声明的变量和 2 - 如果没有,他如何编写他的 JavaScript 以便他可以。这些是谈论调试的链接。根据他的问题,他很清楚 JavaScript 调试的基础知识。 更正我,但我的印象是@Kenneth B 不知道如何使用断点进行调试。有时最好提供作者所要求的替代方案。对于我的情况,我很少设置全局变量来调试我的 javascript,但广泛使用调试器。在我看来,这是一种优越得多的方法,因为您可以在调用堆栈中跳转,看看每个堆栈中的状态是什么。 @Zero21xxx:“知道如何使用 Firebug 作为 DOM 检查器/REPL”并不意味着“知道 JS 断点”。如果实际上 OP 确实想知道如何在他准备好的处理程序中检查随机局部变量(我认为这不是解释问题的错误方式),那么这个答案表明了一种完全有效且有用的方法。【参考方案4】:

这取决于您如何在.ready() 函数中声明变量。如果你做var x = "test",那么不行,它们只能在 ready 函数的范围内访问。如果您执行x="test" 之类的操作,那么它在全局范围内可用,您可以像alert(x);alert(window.x); 一样访问它

您可能不想在 ready 函数内定义变量,但如果您尝试在 ready 函数之外使用它们。

【讨论】:

【参考方案5】:

在全局范围内声明变量:

例如

<script type="text/javascript">
var globalVar = null;
$(document).ready(
function() 
     globalVar = "This is the value";

);

function TestFunc() 
    alert(globalVar);

</script>

在这里,如果您在页面加载后的任何时间调用TestFunc(),您将看到在 ready() 函数中分配的值。

【讨论】:

【参考方案6】:

不确定我是否完全理解了这个问题,但你不能在文档之外声明变量准备好了吗?

var a = "bar";

$(document).ready(function()
    a = "foo";
);

如果您使用的是 firebug,您应该可以在文档就绪内调用 console.log,这可能会为您提供所需的内容。

【讨论】:

【参考方案7】:

如果你有

var x = "foo"
$(document).ready(function()
  alert(x); // foo
);

您可以在任何地方看到x 变量,但如果您将变量y 声明到文档就绪,它将只能在文档就绪内访问:

var x = "foo"
$(document).ready(function()
  alert(x); // foo
  var y = "bar"
  alert(y); // bar
);
alert(y); // undefined

【讨论】:

以上是关于准备好jQuery文档中的调用函数的主要内容,如果未能解决你的问题,请参考以下文章

jquery-$()函数的用法及一些常用的选择器

如何在单独的js文件里调用jquery

调用 MySQL 函数时 PHP 准备语句失败

JQuery:单击文档准备好的随机链接

在 Cognos 10 中报告准备就绪时触发的可靠事件

jQuery AJAX 超时调用函数