Очистить массив по условию
Доброго дня уважаемые коллеги. Вопрос немного простой для понимающий людей, но для меня это проблема, иначе не обращался за помощью.
Хочу сделать так. У нас есть коллекция из 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'); }); |
Velidan,
а сейчас то что мешает? |
Доброго дня Рони. Я просто не знаю как это сделать.
(Ситуация усложняется тем, что у нас 1 элемент точно будет открыт - это текущий, а мне нужно узнать или есть еще какой-то элемент с "открытым" видом) Пробую делать так, но не получается ничего. (пишет Uncaught TypeError: undefined is not a function), я знаю, что это значит, что я передаю неверное значение, но на этом мое понимание процесса заканчивается, к сожалению var newArr = closeButtonCollection.filter(function(item){return item.css('display') == 'block'; }) alert(newArr); |
<!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> |
Velidan,
наверно завести переменную = 0 и её ++ если 'block' и потом если она вдруг 2 то хеппи энд и брек :-? |
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> |
мой вариант :)
<!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> |
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'); }); |
сделал так, но все равно не получается, почему то
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") : ''; } |
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> |
Часовой пояс GMT +3, время: 20:12. |