2009-06-17 4 views
3

私はこれが唯一の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。何か案は?

おかげで、 ピート

+0

特定のエラーメッセージがありますか? – Matchu

+0

Chromeは何も報告しません。それはちょうどその行で死ぬ。 – slypete

答えて

1

問題は、「これ」はすでにある場所にあるDOMノードだということです。 DOMノードは、最初に削除またはコピーすることなく、どこかに配置されたノードを移動することはできません。

あなたがしたい場合は:それは、あなたが

li.appendしなければならない移動($(この).removeは())

  • 「があなたをそれをコピー

    • li.append($(この).clone(真))

    を行うでしょう

    実際には、私は非常に困惑している、それはFFで動作するはずです。それがあれば、それはFFのバグです。

    乾杯、

  • +0

    ありがとう!私はセレクタがリモートページの何かであるので、これについても考えていませんでした。 – slypete

    0

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

    私は1.3.2を使用していて、あなたのコード(コピー&が貼り付けられています)を使用しています。これをFF 3、IE 8、およびChromeで正常に実行できます。

    +0

    私は1.3.2も使用しています。 – slypete

    関連する問題