2015-04-20 200 views
1

我有問題顯示/隱藏我的div,這取決於選定的值「名稱」。jQuery顯示/隱藏與選擇選項的名稱div

這裏是我的HTML:

<select name="selectVehicle" id="selectVehicle"> 
    <option name="A" value="A">Car</option> 
    <option name="C" value="C">Truck</option> 
    </select> 
    <div id="A" class="vehicle">+Car+</div> 
    <div id="C" class="vehicle" style="display:none;">+Truck+</div> 

...而我的JS:

$(function() { 
     $('#selectVehicle').change(function(){ 
      $('.vehicle').hide(); 
      $('#' + $(this).val()).show(); 
     }); 
    }); 

https://jsfiddle.net/wgee7ekh/1/

+1

你面臨的問題是什麼? –

+0

現在它從價值中選擇它們,但我想按名稱選擇 –

回答

2

這裏是你選擇如何根據name屬性:

$(function() { 
    $('#selectVehicle').change(function(){ 
     $('.vehicle').hide(); 
     $('#' + $(this).find('option:selected').attr('name')).show(); 
    }); 
}); 

這裏是JSFiddle

+1

謝謝你好傢伙! –

0

您可以使用:selected獲取所選選項的name屬性。

$('#selectVehicle').change(function(){ 
    $('.vehicle').hide(); 
    $('#' + $(':selected',this).attr('name')).show(); 
}); 

Updated Fiddle

0

的問題是,在this.change()事件處理程序是<select>元素,而不是選擇<option>元素,但是你想從選定<option>元素的name屬性。

您可以通過幾種方式獲得選定的選項。在普通的JavaScript,你可以使用.options陣列和.selectedIndex財產作爲this.options[this.selectedIndex]得到這樣的:

$(function() { 
    $('#selectVehicle').change(function(){ 
     $('.vehicle').hide(); 
     $('#' + this.options[this.selectedIndex].getAttribute("name")).show(); 
    }); 
}); 

的jsfiddle:https://jsfiddle.net/jfriend00/upswtfeg/

或在jQuery中,你可以使用僞選擇:selected到發現這樣的:

$(function() { 
    $('#selectVehicle').change(function(){ 
     $('.vehicle').hide(); 
     $('#' + $(this).find('option:selected').attr('name')).show(); 
    }); 
}); 

的jsfiddle:https://jsfiddle.net/jfriend00/ywkd25w8/

+0

能否請你向我解釋如何用div ID實現這一目標? –

+0

@GabrielDichev - 我不明白你在問什麼。我已經爲這兩個代碼塊包含了一個工作jsFiddle演示,所以應該清楚它們是如何工作的。這兩個例子都使用div id。你現在要求做一些不同的事情嗎? – jfriend00

+0

我仍然不明白爲什麼這個答案被拒絕。我看到兩個如何完成的正確例子。我看到解釋,這在SO中是不常見的現象。那是什麼錯誤? – Regent