0

我有这个问题,我构建了一个我知道是合法的字符串(单独检查),但是当我将它作为参数发送到我的 jQuery 函数时,.html() 函数仍然将它作为字符串输出!我使用 Razor VB 作为我的服务器端语言。

这是输出:

<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);
}
4

3 回答 3

1

我发现了问题所在,显然您需要在传出参数中指定将 razor-vb 字符串用作原始 html 数据。否则,您的两个解决方案都有效!

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

于 2013-06-28T06:03:33.110 回答
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>字符串。

在这里提琴

更新

正如@roasted 指出的那样,这种方式与首先清空元素的append()行为并不完全相同。html()使用.empty().append($dbData). 谢谢烤!

于 2013-06-27T14:06:32.130 回答
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 集合的变量的通用命名约定(这些都不是)
于 2013-06-27T14:23:01.023 回答