如何告诉另一个$(document).ready()调用?

时间:2011-09-13 01:48:25

标签: jquery jquery-selectors

我动态创建iframe,以用作执行基于表单的API调用的位置。

$('<iframe>').attr({
    name : "secret_sending_iframe",
    src : "#",
    style : "visibility:hidden; width:0px; height:0px;"
    }).appendTo("#recordingControl");

这有副作用导致我的$(document).ready()再次触发。这是可以理解的,因为它告诉我我的iframe已经准备就绪,但现在我需要将初始文档准备好与准备好的新文档区分开来。是否有一些方法可以告诉你,除了测试iframe的负面存在以告诉它是第一次调用.ready()之外,iframe是否已经准备就绪?

BTW - 在$(document).ready()调用中测试$(“iframe”)返回[],这是我没想到的。所以对我来说最好的解决方案是使用window.location.href,见下文......

2 个答案:

答案 0 :(得分:3)

每个框架都有自己独立的javascript上下文,它是独立的$(document).ready()。所以,除非您在同一文档中多次调用$(document).ready(),否则我认为您不会多次调用相同的$(document).ready()。否则,每次调用它都会是一个不同的文件。

如果你有相同的代码并且你需要知道正在调用哪一个,你可以随时查看window.location对象以查看你所在的页面/框架。要了解你的情况,我会建议将其添加到每个人:

console.log(window.location.href);

然后,你可以分出哪个是哪个。

答案 1 :(得分:0)

解决这个问题的常用方法是在$(document).ready()函数之前在JS中设置一个全局变量,并在其中测试它:

var run_doc_ready = 0;

$(document).ready(function(){
    ...
    if (!run_doc_ready) {
       ...
       run_doc_ready = 1;
    }
    ...
});