19.03.2015, 12:57
|
Аспирант
|
|
Регистрация: 13.02.2015
Сообщений: 32
|
|
Очистить массив по условию
Доброго дня уважаемые коллеги. Вопрос немного простой для понимающий людей, но для меня это проблема, иначе не обращался за помощью.
Хочу сделать так. У нас есть коллекция из 5 элементов, у каждого из них есть свойство css (display). Я хочу проверить их все, и если в массиве присутствует больше 1 элемента сdisplay - block, что-то там сделать. Как это можно реализовать? Заранее спасибо.
var node3OpenMore = $('#node-wrapper-3').find('a.open');
var node3CloseMore = $('#node-wrapper-3').find('a.close');
node3OpenMore.click(function(){
$('#node-wrapper-3').css({'height':'auto','max-height':'none'})
$('#node-wrapper-3').find('.wrapper-footer').css('position','relative')
});
node3CloseMore.click(function(){
var closeButtonCollection = $('#node-wrapper-3').find('a.close');
var resArray = [];
for(var i = 0;i < closeButtonCollection.length; i++){
var oneElem = $(closeButtonCollection[i]);
if(oneElem.css('display') == 'block') {
alert("Catch");
}
}
$('#node-wrapper-3').find('.wrapper-footer').css('position','absolute');
});
|
|
19.03.2015, 13:06
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,123
|
|
Velidan,
а сейчас то что мешает?
|
|
19.03.2015, 13:09
|
Аспирант
|
|
Регистрация: 13.02.2015
Сообщений: 32
|
|
Доброго дня Рони. Я просто не знаю как это сделать.
(Ситуация усложняется тем, что у нас 1 элемент точно будет открыт - это текущий, а мне нужно узнать или есть еще какой-то элемент с "открытым" видом)
Пробую делать так, но не получается ничего. (пишет Uncaught TypeError: undefined is not a function), я знаю, что это значит, что я передаю неверное значение, но на этом мое понимание процесса заканчивается, к сожалению
var newArr = closeButtonCollection.filter(function(item){return item.css('display') == 'block'; })
alert(newArr);
Последний раз редактировалось Velidan, 19.03.2015 в 13:12.
|
|
19.03.2015, 13:13
|
Профессор
|
|
Регистрация: 27.04.2012
Сообщений: 1,410
|
|
<!DOCTYPE html>
<html>
<head>
<title>example</title>
</head>
<body>
<div style="display: none;">1</div>
<div style="display: none;">2</div>
<div style="display: none;">3</div>
<div style="display: block;">4</div>
<div style="display: none;">5</div>
<script>
var els = document.querySelectorAll('div'), ln = els.length;
for (var i = 0; i < ln; ++i) {
if (els[i].style.display === 'block') {
console.log('yes');
break;
}
}
</script>
</body>
</html>
|
|
19.03.2015, 13:16
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,123
|
|
Velidan,
наверно завести переменную = 0 и её ++ если 'block' и потом если она вдруг 2 то хеппи энд и брек
|
|
19.03.2015, 13:21
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,123
|
|
Velidan,
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script>
$(function(){
var len = $("div:visible").length;
alert('Видимых блоков '+len);
});
</script>
</head>
<body> <div style="display: none;">1</div>
<div style="display: none;">2</div>
<div style="display: block;">3</div>
<div style="display: block;">4</div>
<div style="display: none;">5</div>
</body>
</html>
|
|
19.03.2015, 13:23
|
Профессор
|
|
Регистрация: 27.04.2012
Сообщений: 1,410
|
|
мой вариант
<!DOCTYPE html>
<html>
<head>
<title>example</title>
</head>
<body>
<div style="display: none;">1</div>
<div style="display: none;">2</div>
<div style="display: none;">3</div>
<div style="display: block;">4</div>
<div style="display: none;">5</div>
<div style="display: none;">6</div>
<div style="display: block;">7</div>
<div style="display: none;">8</div>
<div style="display: none;">9</div>
<div style="display: block;">10</div>
<script src="http://code.jquery.com/jquery-2.1.3.min.js"></script>
<script>
var els = $('div'),
thsActive = els.eq(3),
collection = [];
els.each(function (i, el) {
if ($(el).css('display') === 'block' && thsActive !== el) {
collection.push(el);
}
})
console.log(collection)
</script>
</body>
</html>
|
|
19.03.2015, 13:23
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,123
|
|
Velidan,
var node3OpenMore = $('#node-wrapper-3').find('a.open');
var node3CloseMore = $('#node-wrapper-3').find('a.close');
node3OpenMore.click(function(){
$('#node-wrapper-3').css({'height':'auto','max-height':'none'})
$('#node-wrapper-3').find('.wrapper-footer').css('position','relative')
});
node3CloseMore.click(function(){
var closeButtonCollection = $('#node-wrapper-3').find('a.close:visible');
var resArray = [];
if(closeButtonCollection.length > 1) {
alert("Catch");
}
$('#node-wrapper-3').find('.wrapper-footer').css('position','absolute');
});
|
|
19.03.2015, 13:24
|
Аспирант
|
|
Регистрация: 13.02.2015
Сообщений: 32
|
|
сделал так, но все равно не получается, почему то
var closeButtonCollection = $('#node-wrapper-3').find('a.close');
var resArray = [];
for(var i = 0;i < closeButtonCollection.length; i++){
var oneElem = $(closeButtonCollection[i]);
var checker = 0;
if(oneElem.css('display') == 'block') {
checker++;
}
(checker >= 2) ? alert("Catch") : '';
}
|
|
19.03.2015, 13:30
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,123
|
|
skrudjmakdak,
<!DOCTYPE html>
<html>
<head>
<title>example</title>
</head>
<body>
<div style="display: none;">1</div>
<div style="display: none;">2</div>
<div style="display: none;">3</div>
<div style="display: block;">4</div>
<div style="display: none;">5</div>
<div style="display: none;">6</div>
<div style="display: block;">7</div>
<div style="display: none;">8</div>
<div style="display: none;">9</div>
<div style="display: block;">10</div>
<script src="http://code.jquery.com/jquery-2.1.3.min.js"></script>
<script>
var els = $('div'),
thsActive = els.eq(3),
collection;
collection = $.makeArray(els.not(thsActive).filter(':visible'));
console.log(collection)
</script>
</body>
</html>
|
|
|
|