2011-09-11 80 views
1

是否可以添加一個case語句?問題是,現在它從下拉列表中獲取值並將其寫入#shop_price。我想添加一個聲明,當它收到例如「門」時,而不是寫它,它會寫其他東西(例如價格:)。如果有將是一個很大的特殊情況下(.change()與案例

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

$("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

你正在使用一個下拉?或一組共享'.category'類的選擇元素? – jondavidjohn

回答

1

如果我們是在談論一個單一選擇下拉菜單中,你可以使用val做到這一點很容易否則爲什麼用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(); 
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

1

對於初學者來說,除非你<select>允許使用.val()方法多項選擇更快/更容易。例如

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

雖則回答你的問題,你可以在每一個(如果每個需要)或之後分配STR中使用的開關。

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

這是最接近的,但它只有在重新加載頁面後纔有效。 –

+0

好的,我添加了變化,一切正常! –