Как скрыть ненужные элементы чекбоксом ?
Есть список элементов:
<li><div class="on">test1</div></li> <li><div class="off">test2</div></li> <li><div class="on">test1</div></li> <li><div class="on">test1</div></li> <li><div class="off">test1</div></li> И есть checkbox. - Хочу сделать так, чтобы при отмеченном чекбоксе или по клику по чекбоксу прятались элементы с классом "off". - Состояние чекбокса запоминалось. Сам Я в яваскриптах не очень. Может кто-то подсказать на чем лучше всего это реализовать (JS, Ajax, JQuerry) и как сделать запоминание чекбокса ? И в какую сторону копать...и если не трудно хоть приблизительно накидать основу скрипта :) . |
<ul id="elems">
<li class="on">Test 1</li>
<li class="off">Test 2</li>
<li class="on">Test 3</li>
<li class="off">Test 4</li>
<li class="on">Test 5</li>
</ul>
<input type="checkbox" onclick="change(this)" /> спрятать
<script>
function change(obj) {
var elems = document.getElementById('elems').getElementsByTagName('li');
for(i=0;i<elems.length;i++) {
if (elems[i].className == 'off') {
if (obj.checked)
elems[i].style.display = 'none';
else
elems[i].style.display = 'list-item';
}
}
}
</script>
|
http://jsfiddle.net/mh9YA/
или тут, оно же скрой, нажми на F5, посмотри снова :)
<style>li {list-style:none}</style>
<li><div class="on">test1</div></li>
<li><div class="off">test2</div></li>
<li><div class="on">test1</div></li>
<li><div class="on">test1</div></li>
<li><div class="off">test1</div></li>
<br>
<input type="checkbox" value="3k"> чекай.
<script src="http://yandex.st/jquery/1.6.1/jquery.min.js"></script>
<script>
var checkbox=$( 'input[type=checkbox]' );
if( sessionStorage[ 'hided' ] == 'ok' ){ $("div.off").hide();checkbox[0].checked=true }
checkbox.click( function(){
if( this.checked ){
sessionStorage[ 'hided' ]='ok'
$("div.off").fadeOut('slow');
} else {
sessionStorage[ 'hided' ]='no'
$("div.off").fadeIn('slow');
}
})
</script>
|
Очень помогло! Всем спасибо!
|
вопрос по дополнению к теме
Здравствуйте. Подскажите, как div с id привязать к input.
У меня 6 инпутов. И кликнув на чекбокс чтобы сработала такая функция, о которой вы писали ранее. И чтобы строчки не скрывались, а наоборот добавлялись, как бы скрытый блок изначально (style="display: none;") Заранее спасибо. |
walik,
не могли бы вы мне помочь? |
<html>
<head>
<style>
div{
display: none;
}
</style>
</head>
<body>
<div>тест1</div><input type="checkbox"><br>
<div>тест2</div><input type="checkbox"><br>
<div>тест3</div><input type="checkbox"><br>
<div>тест4</div><input type="checkbox"><br>
<div>тест5</div><input type="checkbox"><br>
<div>тест6</div><input type="checkbox"><br>
<script>
[].forEach.call(document.querySelectorAll('input[type="checkbox"]'), function(el){
el.onchange=function(){
el.previousElementSibling.style.display = el.previousElementSibling.style.display === 'block'?'none':'block';
};
});
</script>
</body>
</html>
|
Если именно по ID то такой вариант
<html>
<head>
<style>
div{
display: none;
}
</style>
</head>
<body>
<div id="cl1">тест1</div><input type="checkbox" class="cl1"><br>
<div id="cl2">тест2</div><input type="checkbox" class="cl2"><br>
<div id="cl3">тест3</div><input type="checkbox" class="cl3"><br>
<div id="cl4">тест4</div><input type="checkbox" class="cl4"><br>
<div id="cl5">тест5</div><input type="checkbox" class="cl5"><br>
<div id="cl6">тест6</div><input type="checkbox" class="cl6"><br>
<script>
[].forEach.call(document.querySelectorAll('input[type="checkbox"]'), function(el){
el.onchange=function(){
var div = document.querySelector('div#'+el.className);
div.style.display=el.checked?'block':'none';
};
});
</script>
</body>
</html>
|
j0hnik,
может поменять input и div и без js сделать? |
Цитата:
|
| Часовой пояс GMT +3, время: 06:25. |