2012-09-14 33 views
0

我有一個模板,可以從數據庫中獲取值並使用模板標記顯示數據。返回的值是0 & 1,我可以;真的控制,所以我想獲得一些jquery來更改值,所以0 ='no'和1 ='是'替換由django呈現的模板中的文本

我有這段代碼在這裏工作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

我可以看到我的jQuery的js文件是網頁源代碼中加載HTML時。 但是,當我在我的模板中使用此jQuery代碼時,值不會更改。這是因爲模板正在呈現並且值0或1在加載時不可用?這是別的嗎?

非常感謝 - 奧利

+0

你把代碼放在domready的回調中嗎? – xdazz

+0

對不起 - 我不明白。我正在運行其他jquery腳本正在工作,並已複製相同的方法。你在談論使用這個$(document).ready嗎? – Oli

+0

我的意思是'$(function(){//把你的代碼放在這裏});' – xdazz

回答

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中,則需要這樣做。

+0

謝謝大衛,這工作,但你是對的,我看到頁面的其他部分也改變了。我只更新頁面中的一個表格,所以我會去弄清楚我是否可以根據其#id來更新表格。 – Oli