2011-11-09 5 views
0

javascriptを使用して自分のサイトのjQueryベースのカスタムポップアップウィンドウを作成したいとします。jQueryスクリプトでのHTML-in-string/html()の回避

私はjavascriptの文字列変数内のポップアップに移動して、これその文字列を表示するには、HTMLを格納することによって、それを試作:

stringがこのように定義されて
$('#pop_div').html(string); 

var string= '<div class="className">' + 
    'HTML Content'+ 
'</div>' 

私は」これを行ういくつかのウェブサイトを見たが、間違っていると思う。

それは、静的なHTMLスニペットのために動作しますが、レールのため<% = ..%>

を使用してHTMLを生成しないのJavaScript/jQueryのスクリプトにレールによって生成されたロードHTMLコードの最良の方法は何ですか?

おかげ

+0

http://stackoverflow.com/questions/1071386/jquery-html-and-new-line-charactersこれは機能します。誰かが確認できますか? –

答えて

2

escape_javascriptは、元の文字列ではJavaScriptインタプリタによって適切に解釈されることを保証する作業を行いますので、

<script>var string = <%= escape_javascript(...) =>;</script> 

を行うには罰金です。

詳細は、Why escape_javascript before rendering a partial?を参照してください。

<script>要素の代わりにonclickハンドラに配置する場合は、escape_javascriptにしてからHTMLをエスケープすることに注意してください。

0

変数の要素を格納するために容易になるだろう:

var el = $("<div class='className' />").html("HTML Content"); 

//append the element to the div 
$("#pop_div").append(el); 
0

3つの段階にいかが:

var htmlContent = 'HTML Content'; 

var elem = $('<div />').addClass("className").html(htmlContent); 

$('#pop_div').empty().append(elem); 

、私はRoRのとの "Hello World" をやりました、 Mike Samuelのescape_javascriptコードを使用してください。