2009-12-01 71 views
1

基本上是:jQuery的HTML()將括號爲HTML實體(有時)

我有這樣的HTML:

<div id="foo"><img src="/foo/bar/{var}/foo" alt="{var}"></div> 

當調用(在Firefox中使用jQuery):

$("#foo").html() 

我獲得:

<img src="/foo/bar/%7Bvar%7D/foo" alt="{var}"> 

我的desi紅色輸出是:

<img src="/foo/bar/{var}/foo" alt="{var}"> 

這是怎麼回事?有關如何解決此問題的任何提示?

我想如果解決方案是使用正則表達式來撤消HTML實體轉換,我會感到驚訝。使用parens而不是大括號似乎會導致相同的結果(使用不同的HTML實體)。

編輯:這個我試過用方括號([]),而不像括號和大括號括號不會轉換爲HTML實體。在這裏,parens和大括號有一些特殊的含義嗎?

回答

1

你也許可以使用JavaScript UNESCAPE功能http://www.w3schools.com/jsref/jsref_unescape.asp

+0

謝謝 - 這很有用,但和正則表達式一樣,這樣可以避開任何想要的HTML實體,儘管'unescape'比任何正則表達式都要好得多。 – 2009-12-01 02:40:46

+0

'unescape'應該可以正常工作並正確解碼所有內容。我用'

{var} &
'和'unescape($(「#foo」)。html())''做了一個快速測試,返回出現在源代碼中的文字字符串 – 2009-12-01 03:19:33

0

您是否嘗試過使用在HTML }&#123;{&#125;?這應該防止大括號被JavaScript解釋。