2012-12-19 34 views
0

我有一個onclick事件是這樣的:追加iframe來div的成功,但準備()不工作

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"); 
} 

本來myBigDiv設置爲display:none。 當我點擊我的按鈕後,myFrame成功附加到myDiv。但myBigDiv仍然display:none。我在ready()裏面添加了一個斷點,但顯然這個程序沒有輸入。後

Addtional信息我得到的答案和解決方法:

我的DOM不能被完全加載,因爲頁面上的其他Web部件,這樣ready()永遠不能被調用。

+0

試試live()函數。 –

回答

2

就緒()函數被調用一次,只有當文件已準備就緒,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(); 
} 

}

+0

謝謝,這是一個很好的替代解決方案:) – wceo

+0

@YououWang很高興我能幫忙:) – MimiEAM

0

的。就緒( )方法通常與該屬性不兼容。如果必須使用加載,請不要使用.ready()或使用jQuery的.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'); 

    }); 

如果我明白你的問題,這應該對你有幫助。如果您有任何問題,請告訴我。

0

以下語法三個都是等價的:

  • $(文件)。就緒(處理器)()準備就緒(處理器)(這是不推薦)
  • $
  • $(。處理器)

Jquery文件說。

所以你不應該使用這個。你可以使用done()

.appendTo('.myDiv').done(function(){ 
    $(".myBigDiv").show();