jQuery UI v1.10 には、ダイアログがクリックされたときに開いているすべてのダイアログが更新されるページに複数のダイアログをスタックすることに問題があるようです。
ここにいくつかのフィドルがあります。同じコードを使用:
HTML
<div id="div1" class='d' data-isrc='http://www.slashdot.org'>
</div>
<div id="div2" class='d' data-isrc='http://www.cnn.com'>
</div>
JS
var opts = {
height: 200,
width: 300,
autoOpen: true,
open: function(){
var src = $(this).data("isrc"),
$iframe = $("<iframe seamless='seamless' src='" + src + "'>");
console.log(src);
$(this).append($iframe);
}
};
$("#div1").dialog(opts);
$("#div2").dialog(opts);
このフィドルはjQuery 1.9.1とjQueryUI 1.9.2を使用しており、必要に応じて動作します: http://jsfiddle.net/REmJb/
このフィドルはjQuery 2.0.2とjQueryUI 1.10.3を使用しており、問題を示しています: http://jsfiddle.net/UBV4v/
新しいjQueryフレームワークで上記のリンクを[更新せずに]スムーズに機能させるにはどうすればよいですか?
ETA:
これは、insertBefore()
メソッドの新しいアプローチまで追跡されているようです。ドキュメントの引用:
jQuery 1.9 より前では、単一要素への追加のケースでは新しいセットが作成されませんでしたが、代わりに元のセットが返されたため、不明な数の要素で使用された場合に .end() メソッドを確実に使用することが困難でした。
...しかし、問題はv1.9には存在しないため、おそらくそうではありません。