jQueryメソッドに機能を追加しようとしています。Javascript関数ラッパーが失敗しますか?
は私がli.s
一致する複数の要素があります
$('li.s').appendTo('#target');
コードを持っている、と私はそれが正しくてFirebugを使ってつかんだ見ることができます。
append
メソッドはラッパーなしで正常に動作します。しかし、(機能については何も変更しないでください)私のラッパーを持つ:正しいjQueryオブジェクトではなく、それらのすべてを、返されたが、唯一の最初のli.s
が#target
に追加され
var oldAppend = $.fn.append;
$.fn.append = function(expr) {
return oldAppend.call(this, expr);
};
。どうしてこれなの? oldAppend
へのコールで私の他の要素を失うのはどこですか?
あなたはCONSOLE.LOG場合() 'oldAppend.call(this、expr)'を返す直前に 'this'の 'length'プロパティを返します。 :: console.log(this.length); – James
あなたの例では "appendTo"を使用していますが、 "append"をラップしていますか? –
@great_llama、はい、jQuery.appendToはjQuery.appendを呼び出します。 – strager