0

I have a onclick event like this:

function OnVisClicked() {
    $("#overlay").animate({opacity: "toggle",width: "3000px",height: "3000px"}, 300);
    $('<iframe />', {
    name: 'myFrame',
    id:   'mytFrame',
    width: 724,
    height: 535,
    frameborder:"0",
    scrolling: "no",
    allowTransparency: "true",
    src: "the link..."
}).appendTo('.myDiv').ready(function(){
    $(".myBigDiv").show();
}); 
    $("#someOtherDiv").css("display", "none");
}

Originally myBigDiv was set to display:none. After I clicked on my button, the myFrame is successfully appended to myDiv. But myBigDiv was still display:none. I added a breakpoint inside the ready() but clearly the program didn't entered into it.

Addtional information after I got the answer and the solution:

My DOM cannot be fully loaded because of other web parts on the page, so ready() can never be called.

4

3 回答 3

2

只有当文档准备好时,ready() 函数才会被调用一次,http://api.jquery.com/ready/ 我想你正在寻找其他东西,比如 onload()

function OnVisClicked() {
    $("#overlay").animate({opacity: "toggle",width: "3000px",height: "3000px"}, 300);
    $('<iframe />', {
    name: 'myFrame',
    id:   'mytFrame',
    width: 724,
    height: 535,
    frameborder:"0",
    scrolling: "no",
    allowTransparency: "true",
    src: "the link..."
}).appendTo('.myDiv');

document.getElementById("mytFrame").onload = function() {

    $(".myBigDiv").show();
}

}

于 2012-12-19T10:43:34.117 回答
0

以下所有三种语法都是等效的:

  • $(文档).ready(处理程序)
  • $().ready(handler) (不推荐)
  • $(处理程序)

正如Jquery文档所说。

所以你不应该使用它。您可以使用done()

.appendTo('.myDiv').done(function(){
    $(".myBigDiv").show();
于 2012-12-19T10:48:41.920 回答
0

.ready() 方法通常与属性不兼容。如果必须使用 load,请不要使用 .ready() 或使用 jQuery 的 .load() 方法将 load 事件处理程序附加到窗口或更具体的项目,如图像。

.ready( handler )- DOM 准备好后执行的函数。

如果您想在页面加载时附加 iframe,请尝试以下代码。

    $(document).ready(function() {

      $('<iframe />', {
    name: 'myFrame',
    id:   'mytFrame',
    width: 724,
    height: 535,
    frameborder:"0",
    scrolling: "no",
    allowTransparency: "true",
    src: "the link..."
}).appendTo('.myDiv');

    });

如果我正确理解您的问题,这应该对您有所帮助。如果您有任何问题,请告诉我。

于 2012-12-19T10:47:08.483 回答