如何在jQuery中正确使用开关?

时间:2013-04-07 03:20:23

标签: php javascript jquery

  $(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;
    }

在页面上,我在for循环中有多个<div class="jWinBackFrom"><?php echo $optimum['cWinBackFrom'][$i]; ?></div>

想象一下<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动态构建页面会更快。

我很感激帮助!谢谢!

2 个答案:

答案 0 :(得分: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];
    });
});

答案 1 :(得分: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() ] + ' />');

事实证明,在您的情况下,您几乎可以使用普通的 Javascript数组而不是普通的对象。您只需要将索引从0开始,而不是1