0

href、img属性などに変数を含めるときに文字をエスケープするにはどうすればよいですか?これはうまくいかないようです:

var myData = JSON.parse(jsonString2);
var $grouplist = $('#groups');
$.each(myData, function() {
 $('<li><a href="'+ this.url + '"/><img src="'+ this.src + '" class="image0"/></a></li>').appendTo($grouplist);
 });
}

上記の関数全体。

$('<li><a href=\"' + this.url + '\"</a></li>').appendTo($grouplist);
4

4 に答える 4

4

その必要はありません。要素を作成して属性を設定すると、引用符や属性値など、エスケープについて心配する必要はありません。

$('<li>').append($('<a>', { href: this.url })).appendTo($grouplist);

編集:

image 要素を含むコードも次のようになります。

$('<li>').append(
  $('<a>', { href: this.url }).append(
    $('<img>', { src: this.src, 'class': 'image0' })
  )
).appendTo($grouplist);
于 2012-11-21T21:12:52.750 に答える
0

二重引用符は一重引用符の中にあるため、エスケープする必要はありません。また、あなたはタグを開くのを終えていませんでした。

于 2012-11-21T21:16:30.533 に答える
0

window.escapeをチェックしてください。encodeURIComponentもあります。これは、ユーザー入力の場合に一般的に推奨されます。

他の人が指摘したように、そこで二重引用符をエスケープする必要はありません。だからこれを試してみてください:

$('<li><a href="' + encodeURIComponent(this.url) + '"></a></li>').appendTo($grouplist);

またはGuffaのアプローチ:

$('<li>').append($('<a>', { href: encodeURIComponent(this.url) })).appendTo($grouplist);
于 2012-11-21T21:16:35.167 に答える
0

同じ引用符がある場合にのみ、エスケープする必要があります。あなたの場合、これはうまくいきます:

$('<li><a href="' + this.url + '"</a></li>').appendTo($grouplist);

二重引用符は単一引用符に干渉しないためです。

于 2012-11-21T21:12:25.267 に答える