質問

これが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で正常に実行できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top