私は、jQuery 1.8以降で.before、.after、または.replaceWithを使用してDOMから切断されたテンプレートコンテンツを操作できることに慣れています。1.9では、これらのメソッドは常に変更されていない元のセットを返すため、これらのメソッドで切断されたノードを操作する機能が完全に失われたようです。
例えば:
// prepare some disconnected content, e.g. compiling templates
var $node = $('<div>before</div>');
// later do some calculations and have a need to splice some disconnected content together
var $after = $('<div class="green">after</div>');
$node.after($after)
// Add to the DOM
$('.result').append($node);
これがどのように壊れるかを示すフィドルは次のとおりです。
- 1.8.3(予想される動作):http://jsfiddle.net/octatone/zgynM/
- 1.9(動作しなくなりました):http://jsfiddle.net/octatone/hTp27/
一貫性を保つためにjQueryでこの動作を削除しても問題ありませんが、回避策が必要です。この方法でノードを操作するために、切断されたノードをdomに接続する必要はありません。また、接続する必要もありません。
jQuery 1.9の新しい.after、.before、.replaceWithの動作をどのように回避しますか?