1
<!DOCTYPE html>
<html>
<body>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
<div id="hel"></div>
<script>
txt="<script>alert('Test');</script>";
var headerIcon = '<div>hi</div>';
var messageBox = $("<div class='textDiv'><span class='sp'></span></div>");

$(document).ready(function(){
messageBox.text(txt);
//$(".textDiv .sp").text(txt);
$('#hel').append(headerIcon,messageBox);

});
</script>
</body>
</html>

出力は

hi
<script>alert("Test");</script>

しかし、 $(".textDiv .sp").text(txt); を使用すると messageBox.text(txt); の代わりに 出力は hi のみ $(".textDiv .sp").text(txt);?

編集:htmlを挿入したくありません。テキストのみとして表示したいです。しかし、なぜ messageBox.text(txt); なのか知りたいだけです。動作しますが、 $(".textDiv .sp").text(txt); しません

4

5 に答える 5

6

text()はhtmlタグをエスケープしています。ドキュメントにhtmlを挿入する必要がある場合は、html() http://api.jquery.com/html/を使用してください。

編集:$(".textDiv .sp").text(txt);その段階で要素がDOMに挿入されていないため、機能していないと思います。DOMから要素を選択しようとしています。

試してみてconsole.log( $(".textDiv .sp") )、それが何を返すかを確認してください。

于 2012-11-16T08:57:15.200 に答える
2

このようなことを試してください。私があなたを理解している限り、それは役立つはずです:

$(document).ready(function(){
   $('#hel').append(headerIcon,messageBox);
   $(".textDiv .sp").text(txt);
}

$(".textDiv .sp")を呼び出すとメッセージボックスに表示されます$(".textDiv .sp").text(txt)が、DOMには表示されません。そのため、何も見つかりません($(".textDiv .sp")すでにDOMにある要素のみを検索します)。別のアプローチ:

 $(document).ready(function(){
       $(".textDiv .sp", messageBox).text(txt);
       $('#hel').append(headerIcon,messageBox);       
    }

$(".textDiv .sp", messageBox).text('txt');-ここでの2番目のパラメーターは、jQueryが内部を検索する必要があることを厳密に示していますmessageBox。それは同等ですto messageBox.find(".textDiv .sp").text("txt");

そして、他のユーザーが言及したように、実行したい場合は、代わりにを"<script>alert("Test");</script>"使用する必要があります.html.text

于 2012-11-16T09:01:13.637 に答える
1

それ以外の

$("。textDiv.sp")。text(txt); 、

使用する

$("。textDiv.sp")。html(txt);。

ブラウザを使用する.text()と、そこに配置したいものは何でもhtmlに解析されません。単純なテキストとして表示されます。したがって、.html()代わりに使用してください。

于 2012-11-16T09:01:23.870 に答える
1

ところで、見積もりに失敗しました:

 txt="<script>alert("Test");</script>";

文字列内のスラッシュをエスケープするか、一重引用符を使用するためのeigherがあります

txt="<script>alert(\"Test\");</script>"; //or
txt="<script>alert('Test');</script>";
于 2012-11-16T09:03:02.203 に答える
1

testの周りの引用符を確認してください。二重引用符ではなく単一引用符でエスケープする必要があります。

txt="<script>alert('Test');</script>";
于 2012-11-16T09:04:47.880 に答える