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がロードされると、jqueryjsファイルがページのソースコード内にあることがわかります。しかし、テンプレートでこの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/

DomReadyコールバック内にもDOMロジックを配置することを忘れないでください(私は使用しました$(function(){...)。とにかくフィドルが機能する理由は、jsFiddleがスクリプトをHTMLの下に追加するため、domReadyコールバックでラップする必要がないためです。ただし、スクリプトがドキュメントの先頭にある場合は、そうする必要があります。

于 2012-09-14T11:05:30.763 に答える