.change()与case

时间:2011-09-11 14:49:41

标签: jquery case each

可以添加一个case语句吗?问题是现在它从droplist中获取值并将其写入#shop_price。我想添加一个声明,当它收到例如“门”时,而不是写那个,它会写别的东西(例如价格:)。

$("select.category").change(function () {
 var str = "";
 $("select.category option:selected").each(function () {
 str += $(this).text();
 });
 $("#shop_price").text(str);
 })
 .change();

3 个答案:

答案 0 :(得分:1)

如果我们谈论的是单选下拉菜单,您可以使用val轻松完成:

$("select.category").change(function () {
    var value = $(this).val();
    switch(value) {
        case "door":
             // whatever
             break;
        default:
             $("#shop_price").text(value);
             break;
    }
}).change();

如果会出现很多特殊情况(否则为什么要使用switch代替if?),您可以制作地图:

$("select.category").change(function () {
    var value = $(this).val();

    // This map has function values to give you maximum flexibility on how
    // you want to handle "special" cases. Here, I 'll show an alert.
    var map = {
        // note that you can access value normally inside these functions
        "door": function() { alert("I don't like doors!"); }
        // other special cases here
    };

    if(map[value]) {
        map[value]();
    }
    else {
        $("#shop_price").text(value);
    }
}).change();

答案 1 :(得分:1)

对于初学者,除非<select>允许使用.val()方法进行多项选择,否则更快/更容易。 e.g。

var str = $('select.category').val();

要回答你的问题,你可以在每一个中使用一个开关(如果需要的话)或者在你指定str之后。

switch ($('select.category').val())
{
  case 'door':
    $('#shop_price').text('Price:');
    break;
  //...
}

答案 2 :(得分:0)

$("select.category").change(function () {
    var str = "";
    $("option:selected", this).each(function () {
        var text = $(this).text();
        str += (text == 'door') ? 'price' : text;
    });
    $("#shop_price").text(str);
}).change();

Demo