jQueryバージョン1.7.2を使用していた古いソフトウェアのアップグレードを進めています。私はこれをバージョン1.12.1にアップグレードしました。新しいプラグインが追加され、新しいバージョンのjQueryが必要なためです。jQuery migrateプラグインでjQuery(htmlString)を使用できない
例えば、jQueryの(htmlString)形式を使用していますjQueryのの負荷があります:$(htmlStringが)、それは述べてバージョン1.9に償却し、https://jquery.com/upgrade-guide/1.9/#jquery-htmlstring-versus-jquery-selectorstringでアップグレードガイドを読んでいたよう
var html = $("<div>");
// Prepare the <div> of comments
$.each(data.comments, function() {
console.log(this);
html.append(
$("<div>").attr("class", "comment").html(
$("<div>").attr("class", "comment-profile-pic").html("").after(
$("<div>").attr("class", "comment-text").html(
$("<h1>").html(
this.full_name + " at " + this.started_datetime
).after(
$("<p>" + this.text + "</p>")
)
)
)
)
);
});
に見えます
jQuery Migrateプラグインを使用すると、$() "に渡された文字列が" look "に渡されているかどうかを判断するための古い規則が使用されますHTMLのように "。
jQueryマイグレーションプラグインバージョン1.4.1を添付しましたが、差異を生じさせておらず、セレクタでHTMLを認識できません。
EDIT: jQueryをバージョン1.8.0に戻してみましたが、期待どおりに動作しますが、バージョン1.9.0で破損します。つまり、v 1.9へのアップグレードでは間違いなく問題になります。
さらにテストを行った後、セレクタにhtmlを渡すと、$("<div>").attr("class", "comment")
のような処理をしても、上記の例のようにネストしても機能しないことがわかりました。
HTMLをセレクタに渡すすべてのコードを書き直すことなくこの問題を回避する方法を知っている人はいませんか?
:
あなたは、など
append()
、insert()
、insertBefore()
として、代わりにこのようなものを要素の挿入方法のいずれかを使用する必要があります良い。アップグレードガイドを読むと、html文字列*が '<'文字で始まらない場合にのみ問題になることがわかります: '1.9から、文字列はaで始まる場合のみHTMLと見なされますより小さい( "<")文字です。 Migrateプラグインを使用すると、1.9より前の動作を復元できます。文字列がHTMLであるが、HTMLタグではない任意のテキストで始まる場合は、jQuery.parseHTML()に渡して、マークアップを表すDOMノードの配列を返します。 –ブラウザのキャッシュをクリアしましたか? – Tien
@RoryMcCrossan私はjQueryをv1.8に戻しました。それはv1.9で動作しますので、アップグレードでは問題はありません。 – SamBremner