我在显示/隐藏我的div时遇到问题,这取决于所选的值" name"。
这是我的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();
});
});
答案 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 强>
答案 2 :(得分:0)
问题是,this
事件处理程序中的.change()
是<select>
元素,而不是选定的<option>
元素,但您需要name
属性来自选定的<option>
元素。
您可以通过几种方式获取所选选项。在普通的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();
});
});