3
  $(document).ready(function() {
    //set all logo images based on data returned from database
    var WinBack = $('div.jWinBackFrom').html();
    switch(WinBack) {
        case '1': //If database returns 1 : set Verizon FiOS logo
        $('div.jWinBackFrom').prepend('<img id="WinBackLogo" src="<?php echo site_url();?>/assets/images/verizon-fios-logo.jpg" />');
        break;

        case '2': //If database returns 2 : set DirecTV logo
        $('div.jWinBackFrom').prepend('<img id="WinBackLogo" src="<?php echo base_url();?>assets/images/directv-logo.jpg" />');
        break;

        case '3': //If database returns 3 : set DISH Network logo
        $('div.jWinBackFrom').prepend('<img id="WinBackLogo" src="<?php echo base_url();?>assets/images/dish-network-logo.jpg" />');
        break;
    }

ページには<div class="jWinBackFrom"><?php echo $optimum['cWinBackFrom'][$i]; ?></div>、for ループ内に複数あります。

<div class="jWinBackFrom">1</div>, <div class="jWinBackFrom">2</div>, <div class="jWinBackFrom">3</div>, ,<div class="jWinBackFrom">2</div><div class="jWinBackFrom">1</div>``<div class="jWinBackFrom">3</div>出力を想像してみてください<div class="jWinBackFrom">1</div> 。基本的にすべてランダムです。jQuery は、これらすべての DIV から値を取得し、関連付けられた画像で数値を切り替える必要があります。

私がこれを正しく行っているかどうか(適切な方法を意味する)、これが最も効率的かどうか(おそらくそうではない)を誰かに教えてもらえますか?

他の多くのフィールドについて、このプロセスを繰り返す必要があります。私の理論では、DB が 1 のような単純な値を返し、jQuery を使用してページを動的に構築する方が高速であるというものです。

助けてくれてありがとう!ありがとう!

4

2 に答える 2

2

PHP については何も知りませんが、オプションを配列に追加して、インデックスを検索してみませんか。

var choices = [
    "", // Apparently nothing at index 0
    '<img id="WinBackLogo" src="<?php echo site_url();?>/assets/images/verizon-fios-logo.jpg" />',
    '<img id="WinBackLogo" src="<?php echo base_url();?>assets/images/directv-logo.jpg" />',
    '<img id="WinBackLogo" src="<?php echo base_url();?>assets/images/dish-network-logo.jpg" />'
]

$(document).ready(function() {
    $('div.jWinBackFrom').html(function(i, htm) {
        return choices[htm];
    });
});
于 2013-04-07T03:27:54.693 に答える
0

このような状況/要件では、通常、ルックアップ ハッシュを作成するのが最善です。

var hash = {
    1:   'verizon-fios-logo.jpg',
    2:   'directv-logo.jpg',
    3:   'dish-network-logo.jpg'
};

そして、あなたは次のように行くことができます

$('div.jWinBackFrom').prepend('<img id="WinBackLogo" src="<?php echo site_url();?>/assets/images/"' + hash[ $('div.jWinBackFrom').html() ] + ' />');

結局のところ、あなたの場合、プレーンなObjectの代わりにプレーンなJavascript Arrayをほとんど使用できます。の代わりにインデックスを開始する必要があります。01

于 2013-04-07T03:26:10.813 に答える