2011-09-11 5 views
1

これにcase文を追加することは可能ですか?現時点では、それはドロップリストから価値を得て、それを#shop_priceに書き込みます。私は、例えば「ドア」を受け取ったときにそれを書くのではなく、別のもの(例えば、価格:)を書くという発言を追加したい。.change()with case

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

はい、可能です。あなたはそれを試しましたか? – JJJ

+0

はい、それに問題はありますか?また、ある種のルックアップマップを使うこともできます: 'var map = {'door': 'price'};'。 –

+0

あなたは1つのドロップダウンで作業していますか? '.category'クラスを共有するselect要素のグループ? – jondavidjohn

答えて

1

我々は単一選択ドロップダウンの話をしている場合は、valを使用してそれをはるかに簡単に行うことができます。

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

(特殊なケースの多くがあるように起こっている場合それ以外の場合ifの代わりにswitchを使用する理由は?)、地図を作成できます。

$("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(); 
0
あなたの <select>.val()メソッドを使用して複数選択を可能にしない限り、手始めに
$("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

1

は、はるかに高速/簡単です。例えば

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

あなたの質問に答えるには、それぞれのスイッ​​チの中で(それぞれが必要な場合)またはstrを割り当てた後でスイッチを使用できます。

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

これが一番近いですが、ページをリロードした後にのみ動作します。 –

+0

私は変更を加えて、すべてが機能します! –