Скрытие объектов с помощью селект
Здравствуйте!
Есть задание, заключающееся в скрывании элементов с помощью селекта при выбранной опции , сори, даже по русски толково объяснить не могу:-? В общем html выглядит так:
<div id="cont">
<div id="red"></div>
<div id="green"></div>
<div id="blue"></div>
<div id="yellow"></div>
<div id="sel">
<select name="menu" id="sel1" onchange="showTR();">
<option selected="selected" value = "0">Choose a color</option>
<option value = "1">Red</option>
<option value = "2">Green</option>
<option value = "3">Blue</option>
<option value = "4">Yellow</option>
</select>
</div>
</div>
Единственное, что более ни менее подходит это вот это
var selectedOption = visibleSelect.find('option:selected');
Пробовала по разному, но ничего не выходит Извините, что обращаюсь с такой простотой, как я подозреваю. Но самой найти решение не удалось или я не так искала Помогите пожалуйста:) |
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>…</title>
<style>
.color-selector {
margin: 10px;
}
.color-list, .color-list .color {
display: inline;
margin: 0;
padding: 0;
}
.color-list .color {
list-style: none;
padding: 4px;
color: #fff;
}
.color-list .red {
background-color: red;
}
.color-list .green {
background-color: green;
}
.color-list .blue {
background-color: blue;
}
.color-list .yellow {
color: #000;
background-color: yellow;
}
</style>
</head>
<body>
<div class="color-selector">
<ul class="color-list">
<li class="color red">red</li>
<li class="color green">green</li>
<li class="color blue">blue</li>
<li class="color yellow">yellow</li>
</ul>
<select>
<option value="none" selected>Choose a color</option>
<option value="red">Red</option>
<option value="green">Green</option>
<option value="blue">Blue</option>
<option value="yellow">Yellow</option>
</select>
</div>
<div class="color-selector">
<ul class="color-list">
<li class="color red">red</li>
<li class="color green">green</li>
<li class="color blue">blue</li>
<li class="color yellow">yellow</li>
</ul>
<select>
<option value="red">Red</option>
<option value="green" selected>Green</option>
<option value="blue">Blue</option>
<option value="yellow">Yellow</option>
</select>
</div>
<script src="http://code.jquery.com/jquery.js"></script>
<script>
(function () {
function ColorSelector(params) {
$.extend(this, params);
}
ColorSelector.prototype = {
constructor: ColorSelector,
root: null,
colorSel: ".color",
selectSel: "select",
notSelectedVal: "none",
_$colors: null,
_$select: null,
_findElements: function () {
this._$colors = $(this.colorSel, this.root);
this._$select = $(this.selectSel, this.root);
},
_initEvents: function () {
this._$select.change($.proxy(this._onChange, this));
},
_onChange: function () {
var value = this._$select.val();
this._$colors.hide();
if (value != this.notSelectedVal) {
this._$colors.filter("." + value).show();
}
},
init: function () {
this._findElements();
this._initEvents()
this._onChange();
}
};
$.fn.colorSelector = function (params) {
return this.each(function () {
new ColorSelector($.extend({root: this}, params)).init();
});
};
}());
$(".color-selector").colorSelector();
</script>
</body>
</html>
|
Octane, большое спасибо за ответ!
Простите за нечеткое объяснение в предыдущем посте(( Но в моем случае цветные объекты должны изначально присутствовать, в определенной css позиции. А созданная функция должна скрывать один из объектов в соответствии с выбранным цветом, не меняя позиции других элементов, и снова показывать при выборе другого, скрывая каждый раз тот, который выбран. Вот, примерно так
<html>
<head>
<meta charset="utf-8">
<title>…</title>
<style type="text/css">
#cont{width:70px;margin:5% auto;position:relative;height:70px;border:1px solid #000;}
#red,#green,#blue,#yellow{height: 40px;width: 40px;left: 10px;position: absolute;}
#red{background-color:red;left: 0;top:0}
#green{background-color:green;left:10px;top:10px}
#blue{background-color:blue;left: 20px;top:20px}
#yellow{background-color:yellow;left: 30px;top:30px}
#sel {position:absolute;left:0px;top:67px}</style>
</head>
<body>
<div id="cont">
<div id="red"></div>
<div id="green"></div>
<div id="blue"></div>
<div id="yellow"></div>
<div id="sel">
<select name="menu" id="sel1" onchange="showTR();">
<option selected="selected" value = "0">Choose a color</option>
<option value = "1">Red</option>
<option value = "2">Green</option>
<option value = "3">Blue</option>
<option value = "4">Yellow</option>
</select>
</div>
</div>
</body>
</html>
|
Ну так переделайте, как нужно
|
Пробовала по разному менять предложенный Вами код не получается:cray: .помогите!
|
olahanz,
<html>
<head>
<meta charset="utf-8">
<title>…</title>
<style type="text/css">
#cont{width:70px;margin:5% auto;position:relative;height:70px;border:1px solid #000;}
#red,#green,#blue,#yellow{height: 40px;width: 40px;left: 10px;position: absolute;}
#red{background-color:red;left: 0;top:0}
#green{background-color:green;left:10px;top:10px}
#blue{background-color:blue;left: 20px;top:20px}
#yellow{background-color:yellow;left: 30px;top:30px}
#sel {position:absolute;left:0px;top:67px}</style>
<script type="text/javascript" src="http://yandex.st/jquery/1.4.4/jquery.min.js"></script>
<script type="text/javascript">
function showTR () {
$("#Show-Hid div[id]").show();
$("#Show-Hid #"+$('#sel1 option:selected').text()).hide()
}
</script>
</head>
<body>
<div id="cont">
<div id="Show-Hid">
<div id="red"></div>
<div id="green"></div>
<div id="blue"></div>
<div id="yellow"></div>
</div>
<div id="sel">
<select name="menu" id="sel1" onchange="showTR();">
<option selected="selected" value = "0">Choose a color</option>
<option value = "1">Red</option>
<option value = "2">Green</option>
<option value = "3">Blue</option>
<option value = "4">Yellow</option>
</select>
</div>
</div>
</body>
</html>
|
Deff!
Bolshoe spasibo, tochno tak kak bilo hujno.:dance: Izvinite za shrift, pishu s raboti |
| Часовой пояс GMT +3, время: 04:06. |