4

http://jsfiddle.net/mblase75/NfzbA/-jQuery1.9.1を使用

var $opts = $('.plant-page').map(function (i, el) {
    return $('<option>');
}).appendTo('#change-page select');

JavaScriptコンソールのエラーは次のようになります。Uncaught TypeError: Cannot read property 'ownerDocument' of undefined

jQuery 1.8.3に切り替えると、期待どおりの結果が得られます。オプション要素がselectに追加されます:http: //jsfiddle.net/mblase75/NfzbA/2/

私は何か間違ったことをしていますか?

4

1 に答える 1

3

jQuery 1.9.1では、.map()コールバック関数を書き直して、jQueryオブジェクトの代わりにDOMelementを返すと、期待どおりに機能します。http: //jsfiddle.net/mblase75/NfzbA/3/

var $opts = $('.plant-page').map(function (i, el) {
    return $('<option>').text(this.id)[0];
}).appendTo('#change-page select');

これをjQueryのバグ(http://bugs.jquery.com/ticket/13567)として送信したとき、次のように言われました。

notabugに設定された解像度

を介してjQueryオブジェクトをjQueryオブジェクトに挿入したため、jQueryオブジェクト内にあるjQueryオブジェクトを追加しようとしています$.fn.map()。これはサポートされていませんが、十分に明白です。間違って行う可能性の無限のリストがあるため、通常、jQueryセットに含めることができないすべてのリストを作成することはありません。あなたの書き直しは良く見えます。

つまり、これはjQuery 1.8で機能しましたが、バグではなく、期待される動作への復帰と見なされます。.map()コールバックは、jQueryオブジェクトではなく常にDOMelementsを返す必要があります。

于 2013-03-05T15:57:41.333 に答える