4

リンクごとに、JavaScript (jQuery) を使用して動的にテキストを表示する必要があります。問題は、テキストも HTML としてフォーマットされているため、後のビューで問題が発生することです。今は ID 属性に保存していますが、これは機能しますが、HTML が埋め込まれていない場合に限られます。

<?php
...
$desc = '<p style="color: red">some <span>data</span></p>';
echo '<a href="#" id="' . $desc . '">' . $key . '</a>';
?>

Ajax リクエストは許可されていません。この目標を達成する簡単な方法はありますか?

4

2 に答える 2

13

属性は、これidに最も適していない場所の 1 つです (一意である必要があり、すべての文字を含めることはできません)。代わりに属性を使用しdata-ます (HTML5 で導入されましたが、HTML5 doctype を使用せずに古いブラウザーでも機能します)。

<a href="#" data-desc="....">

jQuery を使用している場合は、 経由.data('desc')でアクセスできます。プレーンな JavaScript では、最も移植性の高い方法は を使用すること.getAttribute('data-desc')です。古いブラウザーをサポートする必要がない場合は、.dataset.descプロパティを介して値にアクセスできます。

いずれにせよ、属性に動的データを挿入するときに何も壊れないようにする必要があります。htmlspecialchars()この目的で使用します。

$desc = '<p style="color: red">some <span>data</span></p>';
echo '<a href="#" data-desc="' . htmlspecialchars($desc) . '">' . $key . '</a>';
于 2012-06-17T17:49:43.727 に答える
1

他のコメントは絶対に正しいです。これをしないでください。属性に何らかの識別子以外を入れるのは適切ではありませんid

そうは言っても、コードが失敗する理由をお知らせしたいと思いました。意図したとおりに使用する前に、データを使用する必要がありhtmlspecialchars()ます。そうすれば、HTML は HTML として解釈されません...すべての HTML エンティティが変換されるため、属性値はテキストとして解釈されます。 <になる&lt;>なる&gt;、など。後で (jQuery などを使用して) 値を引き出すと、意図したとおりのテキストが得られます。

于 2012-06-17T17:51:18.050 に答える