2

私はこのコードを持っています:

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); 」という行まで追跡しました。これは、すべての行の間に " alert("Test"); "を追加することで、その行の後 (IE8 では) アラートを出力しません。

奇妙なことは、jquery min-file でエラーが発生することです (IE8 では、他のブラウザーやブラウザーのバージョンはありません)。

SCRIPT5007: プロパティ 'nodeType' の値を取得できません: オブジェクトは null または未定義です jquery.min.js?ver=3.4.1、行 2 文字 4426

4

2 に答える 2

5

jQuery の clone() の代わりに、JavaScript DOM API の cloneNode() メソッドを呼び出すことができます。MDNに関する詳細情報

例 :

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

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

===>デモ

于 2012-10-02T07:39:37.333 に答える
2

.clone()HTMLテキストではなくjQuery拡張要素を提供します。jQueryオブジェクトを受け入れるのに十分な容量がありますが、これは本来意図されていたものではありません。.html()

解決策として、$(openPopup).empty().append(clone);代わりにを使用してみてください$(openPopup).html(clone);

于 2012-10-02T07:34:29.087 に答える