2014-10-08 80 views
0

我使用jQuery將行插入到表中動態。該行本身是一個(text-)模板,它將內部替換的某些內容替換爲一個jQuery DOM節點。雖然這在Firefox和IE中可以正常工作:Chrome瀏覽器和Safari不會插入節點,但會將HTML作爲字符串插入。這種方法,我沒有獲得一排,錯誤的HTML源代碼...的固體塊這是一個災難UX :)jQuery insertAfter在鉻&safari導致內容被插入爲字符串

很簡單再生產: http://jsfiddle.net/288sp1qb/4/


...我已經找到出錯的原因是我將我的模板存儲在<noscript>標記中。我必須這樣做,因爲我知道的所有其他標籤都被解釋了,所以大多數瀏覽器要麼刪除<tr><td>標籤,要麼修改其中的內容。

將模板存儲在變量中也不是一個選項,因爲該模板已經包含一些後端生成的數據。 所以實際的問題是:如何讓Webkit瀏覽器在插入數據後解釋數據?或者:我應該如何存儲模板呢?

+0

這裏的實際目標是什麼?你的解釋還不清楚,你在小提琴演示的方法似乎是非正統的。 – j08691 2014-10-08 14:57:44

+0

解析到模板中的內容是部分服務器端和部分客戶端端內容,模板本身是傳遞的html的一部分,這使得訪問變得容易。 – 2014-10-08 15:01:59

+0

@曼哈頓先生請看看我在答案部分發布的答案。 – Ashish 2014-10-08 15:07:49

回答

1

HTML代碼 -

<table id="table"> 
    <tr> 
     <th>bsp.</th> 
    </tr> 
</table> 
<noscript id="tpl" style="display:none"> 
    <tr><td>%VAR%</td></tr> 
</noscript> 

jQuery代碼 -

var node = $("#tpl").text(); 
node = node.replace("%VAR%","test"); 
$($.parseHTML(node)).insertAfter("#table tr:last()"); 

的jsfiddle - http://jsfiddle.net/Ashish_developer/s35ppva8/

該解決方案在所有的瀏覽器工作正常。

+0

「use .text(),而不是.html()」就足夠了,不過謝謝你,但是,這工作正常。 – 2014-10-08 15:10:40