Показать/скрыть div на основе опции выбора jquery
Вот мой код. Почему это не работает?
<Script>
$('#colorselector').change(function() {
$('.colors').hide();
$('#' + $(this).val()).show();
});
</Script>
<Select id="colorselector">
<option value="red">Red</option>
<option value="yellow">Yellow</option>
<option value="blue">Blue</option>
</Select>
<div id="red" class="colors" style="display:none"> .... </div>
<div id="yellow" class="colors" style="display:none"> ... </div>
<div id="blue" class="colors" style="display:none"> ... </div>
Ответы
Ответ 1
Вы запускаете код перед загрузкой DOM.
Попробуйте следующее:
Живой пример:
http://jsfiddle.net/FvMYz/
$(function() { // Makes sure the code contained doesn't run until
// all the DOM elements have loaded
$('#colorselector').change(function(){
$('.colors').hide();
$('#' + $(this).val()).show();
});
});
Ответ 2
Чтобы показать div при выборе одного значения и скрыть при выборе другого значения из раскрывающегося списка: -
$('#yourselectorid').bind('change', function(event) {
var i= $('#yourselectorid').val();
if(i=="sometext") // equal to a selection option
{
$('#divid').show();
}
elseif(i=="othertext")
{
$('#divid').hide(); // hide the first one
$('#divid2').show(); // show the other one
}
});
Ответ 3
Вам не хватает :selected
в селекторе для show()
- см. jQuery documentation для примера того, как использовать эту.
В вашем случае это, вероятно, будет выглядеть примерно так:
$('#'+$('#colorselector option:selected').val()).show();
Ответ 4
<script>
$(document).ready(function(){
$('#colorselector').on('change', function() {
if ( this.value == 'red')
{
$("#divid").show();
}
else
{
$("#divid").hide();
}
});
});
</script>
Сделайте это для каждого значения