3

これが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です。何か案は?

ありがとう、ピート

4

2 に答える 2

1

問題は、「これ」がすでにどこかにあるDOMノードであるということです。最初に削除またはコピーせずに、すでにどこかにあるDOMノードを移動することはできません。

あなたがしたい場合は:

  • それを動かす、あなたはしなければならない

    li.append($(this).remove())

  • それをコピーします

    li.append($(this).clone(true))

実際、FFで動作するはずだと私はかなり戸惑っています。もしそうなら、それはFFのバグです。

乾杯、

于 2009-06-18T08:44:20.813 に答える
0

おそらく、これは子を選択しようとしている要素の問題か、使用しているjQueryのバージョンの問題です。

私は1.3.2を使用しており、コード(コピー&ペースト)を使用しています。これはFF 3、IE 8、およびChromeで正常に実行できます。

于 2009-06-17T21:40:24.813 に答える