我有这个问题,我建立一个我知道是合法的字符串(单独检查出来),但是当我将它作为参数发送到我的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);
}
答案 0 :(得分:1)
我发现问题是什么,显然你需要在传出参数中指定razor-vb字符串用作原始html数据。否则你的两个解决方案都有效!
<script type="text/javascript">popup("@(html.Raw(obstacleList))" , @row.id);</script>
答案 1 :(得分: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)
。谢谢烤!
答案 2 :(得分: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
}
我也冒昧地从变量名中删除美元符号;