なぜこれがFirefoxでしか機能しないのですか?
質問
これがFirefoxでのみ機能する理由を見つけるために、自己完結型の例を作成しました。
var ul = jQuery('<ul></ul>');
jQuery(selector).children().each(function() {
var li = jQuery('<li></li>');
var label = '<label for="' + this.id + '">' + this.name + '</label>';
li.append(label);
li.append(this);
ul.append(li);
});
任意のWebkitブラウザーまたはIEでも次の行で失敗します:
li.append(this);
これはHTMLInputElementです。アイデアはありますか?
ありがとう、 ピート
解決
問題は、「これ」既にある場所にあるDOMノードです。 DOMノードを移動することはできません。DOMノードは、削除またはコピーせずに既にどこかに配置されています。
必要な場合:
-
移動します、あなたがしなければなりません
li.append($(this).remove())
-
それをコピーして、あなたがします
li.append($(this).clone(true))
実のところ、私はかなり困惑しています。FFで動作するはずです。もしそうなら、それはFFのバグです。
乾杯、
他のヒント
これはおそらく、子を選択しようとしている要素の問題、または使用しているjQueryのバージョンの問題です。
1.3.2を使用し、コード(コピー&貼り付け)を使用しています。これをFF 3、IE 8、およびChromeで正常に実行できます。
所属していません StackOverflow