2013-06-27 112 views
0

我有這個問題,我建立一個字符串,我知道是合法的(單獨檢查出來),但是當我將它作爲參數發送給我的jQuery函數時。 html()函數仍將其輸出爲字符串!我使用Razor VB作爲我的服務器端語言。jQuery .html()將HTML代碼輸出爲文本而不是html

這是輸出:

<table><tr><th>Cause</th><th>Delay</th></tr></table> 

字符串生成器:

Dim obstacleList As String 

obstacleList = "<table><tr><th>Orsak</th><th>Försening</th></tr>" 

For Each obstRow In obstData 

    obstacleList = obstacleList & "<tr><td>" & obstRow.cause & "</td><td>" & obstRow.hoursplaned & "</td></tr>" 

Next 

    obstacleList = obstacleList & "</table>" 

這裏我把這些變量中的代碼:

<script type="text/javascript">popup("@obstacleList" , @row.id);</script> 

jQuery代碼:

function popup($dbData, $rowid) { 
    $('<div class="tooltip' + $rowid + '"></div>').fadeIn("fast").appendTo('body'); 
    $('.tooltip' + $rowid + '').html($dbData); 
} 
+0

你並不需要一些進一步的標記在HTML字符串告訴瀏覽器,這是HTML?即<!DOCTYPE html> etc? – Dutts

+0

http://api.jquery。com/html/ –

+0

閱讀生成的源代碼。 – SLaks

回答

1

我發現了什麼問題,顯然需要在傳出指定razor-vb字符串將被用作原始html數據的參數。否則你的兩個解決方案都有效!

<script type="text/javascript">popup("@(html.Raw(obstacleList))" , @row.id);</script>

0
使用

$('.tooltip' + $rowid + '').append($dbData); 

代替

$('.tooltip' + $rowid + '').html(). 

$('.tooltop' + $rowid + '').html(function(index, yourOldHtml) { 
    return $dbData; 
} 

如果$dbData是你的<table><tr><th>Cause</th><th>Delay</th></tr></table>字符串。

Fiddle here

更新

爲@roasted指出的那樣,append()方式是不完全相同的行爲html(),因爲它首先清空元素。使用.empty().append($dbData)。謝謝烤!

+3

與'.html()'工作。 – tymeJV

+0

順便說一句,append()不是相同的行爲,也許.empty()。append()然後 –

+0

仍然沒有得到任何html輸出,只是包含所有html標籤的文本字符串。 (我將代碼包含到其他html標籤的btw文檔中,所以不能這樣)。 – user2528334

0

我不確定是什麼導致了你的問題,但沒有必要選擇你剛創建的div(你已經在內存中) - 你可以鏈接命令;

function popup(dbData, rowid) { 
    $('<div class="tooltip' + rowid + '"></div>') // create a div 
     .html(dbData) // first insert html 
     .appendTo('body') // before attaching to DOM 
     .fadeIn('fast'); // and fading in 
} 

我還冒昧地從變量名稱中刪除美元符號,因爲它們是;

  1. 沒有必要
  2. 了通用命名約定包含一個jQuery集合(其中這些都不是)變量
+0

不知道命名的事情!謝謝你的幫助! – user2528334