11

jQuery を使用しtitleて要素の属性を更新すると、エンティティ (特に
、属性に改行を追加する現在推奨されている方法title) が正しく表示されないことがわかりました (エンティティはテキストとして表示され、解析されません… )。

例えば:

<!-- This works fine -->
<div title="foo&#10;bar">baz</div>

でもこれは:

<div>baz</div>
<script>
$("div").attr('title', 'foo&#10;bar'); // Escapes the &
</script>

jQueryに値をエスケープさせない方法はありますか? unescape()以前使ってみ.attr()たのですが、うまくいきませんでした…</p>

4

4 に答える 4

17
于 2012-07-21T10:01:57.543 に答える
15

あなたが正しいです; unescape()この場合は機能しません。あなたができることは、ここの回答に記載されていることと似ています。

基本的に、jQuery を使用して空の要素を作成し、その HTML をタイトルに必要なテキスト ('foo&#10;bar'この場合) に設定してから、要素のテキストを取得します。

少し複雑に聞こえますか?それはそうですが、これはどの HTML エンティティでも機能し、実際にはワンライナーにすぎません。コードは次のとおりです。

<div>baz</div>
<script>
    var title = $('<div/>').html('foo&#10;bar').text();
    $("div").attr('title', title);
</script>

または1行で:

$('div').attr('title', $('<div/>').html('foo&#10;bar').text());
于 2012-07-21T10:08:58.237 に答える
5

これを頻繁に行う場合は、この関数を使用すると時間を節約できます。

function unescp(x){
 return $('<div/>').html(x).text();
}
$("div").attr('title',unescp('foo&#10;bar'));

こちらをご覧ください: http://jsfiddle.net/9Lnru/ </p>

于 2012-07-21T10:14:59.720 に答える
0

非表示の要素に値を入れることを試みることができます。そして、jquery でその値を div にコピーします。気付かれずにjQueryを通過するかどうかはわかりませんが、試してみる価値はあります...

于 2012-07-21T10:00:21.107 に答える