1

我有一个模板,它从数据库中获取值并使用模板标签显示数据。返回的值是 0 和 1,我无法真正控制它,所以我试图让一些 jquery 来更改值,所以 0 = 'no' 和 1 = 'yes'

我有这个代码在这里工作http://jsfiddle.net/a9cvx/236/

使用这个

$(document).ready(function() {
    $("body").html($("body").html().replace(/0/g,'<b>abcde-fghi</b>'));
    $("body").html($("body").html().replace(/1/g,'<b>yes</b>'));
)};

这是我的模板代码。

...
<tr>
   <td>Reboot VM</td>
   <td>{{ col.t_rebootvm }}</td>
   <td>waiting</td>
</tr>
....

所以 {{ col.t_rebootvm }} 来自数据库,等于 0 或 1。

加载 html 时,我可以看到我的 jquery js 文件位于页面源代码中。但是当我在我的模板中使用这个 jquery 代码时,值不会改变。这是因为正在渲染模板并且值 0 或 1 在加载时不可用?这是别的吗?

非常感谢 - 奥利

4

1 回答 1

0

替换整个 HTML 文档中的字符串不是一个好习惯。你会丢失事件并且很可能替换你不想要的东西。它也可能很慢。

您至少应该尝试在选择器中更加具体,例如:

$(function() {
     $('td').each(function() {
         var html = $(this).html();
         $(this).html( 
             html.replace(/0/,'<b>no</b>')
                 .replace(/1/,'<b>yes</b>')
         );
     });
});

http://jsfiddle.net/prF9k/

不要忘记将 DOM 逻辑也放在 DomReady 回调中(我用过$(function(){...)。无论如何,您的小提琴工作的原因是因为 jsFiddle 在 HTML 下方添加了脚本,因此无需将其包装在 domReady 回调中。但是,如果您的脚本位于文档的 HEAD 中,则需要这样做。

于 2012-09-14T11:05:30.763 回答