替换django呈现的模板中的文本

时间:2012-09-14 10:55:25

标签: jquery

我有一个模板,用于从数据库中获取值并使用模板标记显示数据。返回的值是0& 1,我可以;真的控制它,所以我试图得到一些jquery来改变值,所以0 ='不'和1 ='是'

我已在此处使用此代码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在加载时不可用?这是别的吗?

非常感谢 - Oli

1 个答案:

答案 0 :(得分: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中,则需要执行此操作。