2012-10-02 58 views
2

我有這樣的代碼:的clone()不工作的Internet Explorer 8

openPopup.hide(); 

var substr = popupId.split('-');       
var clone = $("#popup"+substr[1]).clone(true); 

$("#popup"+substr[1]).remove(); 
$(openPopup).html(clone); 
$.dimScreenStop(); 

它運作良好,在IE 7,IE 9,Chrome瀏覽器,Firefox瀏覽器。

我已經將問題追蹤到「var clone = $(」#popup「+ substr [1])。clone(true);」。通過在所有行之間以及在該行之後(在IE8中)添加「警報(」測試「);」它不會輸出警報。

奇怪的是,我在jQuery的最小文件(只是在IE8沒有其他的瀏覽器或瀏覽器版本)得到錯誤:

SCRIPT5007:無法獲得屬性的值「節點類型」:對象爲null或undefined jquery.min.js?版本3.4.1 =,第2行字4426

+0

? – Blender

+0

即時通訊使用版本1.7.1,將更新並嘗試最後一個。 – JohnSmith

+0

現在它是最新版本1.8.2,不會改變任何東西,我害怕。 – JohnSmith

回答

2

.clone()給你一個的jQuery展元件不是HTML文本。儘管.html()足夠容納接受jQuery對象,但這並不是它最初的目的。

作爲一個解決方案,請嘗試使用$(openPopup).empty().append(clone);代替$(openPopup).html(clone);

+0

感謝您的回答!我害怕它沒有幫助。問題在於「var clone = $(」#popup「+ substr [1])。clone(true);」在IE8中,因爲它不會在該行之下執行任何操作。所以編輯行.html(克隆);想要影響。 – JohnSmith

+0

哦..好的。在克隆前嘗試提醒'substr [1]'的值。 'alert(substr [1])' - 這可能會給你一些提示。 – techfoobar

+0

它工作正常,提醒在div-id名稱末尾的id。 – JohnSmith

5

你可以調用JavaScript DOM API cloneNode()方法,而不是jQuery的克隆()。 上MDN

實例更多信息:

var clone = $("#node").get(0).cloneNode(true); 
var $clone = $(clone); // JQUERY object 

$('#copy').empty().html($clone.html());​ 

===>Demo您正在使用什麼版本的jQuery

+0

感謝您的回答!問題是這個「腳本」是一個彈出窗口,裏面有一個YouTube視頻,當你點擊一個鏈接時會顯示這個視頻。我希望能夠點擊鏈接,獲取彈出窗口,然後關閉多次。所以,如果我是正確的,上面的代碼不會工作第二次點擊鏈接? – JohnSmith

+0

我不明白你想做什麼,但cloneNode是IE中克隆的替代方案。 – MyBoon