Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.03.2015, 12:57
Аспирант
Отправить личное сообщение для Velidan Посмотреть профиль Найти все сообщения от Velidan
 
Регистрация: 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');
        });
Ответить с цитированием
  #2 (permalink)  
Старый 19.03.2015, 13:06
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

Velidan,
а сейчас то что мешает?
Ответить с цитированием
  #3 (permalink)  
Старый 19.03.2015, 13:09
Аспирант
Отправить личное сообщение для Velidan Посмотреть профиль Найти все сообщения от Velidan
 
Регистрация: 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.
Ответить с цитированием
  #4 (permalink)  
Старый 19.03.2015, 13:13
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 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>
Ответить с цитированием
  #5 (permalink)  
Старый 19.03.2015, 13:16
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

Velidan,
наверно завести переменную = 0 и её ++ если 'block' и потом если она вдруг 2 то хеппи энд и брек
Ответить с цитированием
  #6 (permalink)  
Старый 19.03.2015, 13:21
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

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>
Ответить с цитированием
  #7 (permalink)  
Старый 19.03.2015, 13:23
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 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>
Ответить с цитированием
  #8 (permalink)  
Старый 19.03.2015, 13:23
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

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');
        });
Ответить с цитированием
  #9 (permalink)  
Старый 19.03.2015, 13:24
Аспирант
Отправить личное сообщение для Velidan Посмотреть профиль Найти все сообщения от Velidan
 
Регистрация: 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") : '';
            }
Ответить с цитированием
  #10 (permalink)  
Старый 19.03.2015, 13:30
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

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>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Очистить массив от дубликатов по двум полям webphp AJAX и COMET 5 20.09.2014 15:41
Отправить, когда четко соберется массив vas88811 Events/DOM/Window 11 26.02.2014 21:55
Очистить двумерный массив vah-smile Элементы интерфейса 7 30.03.2011 15:26
Как создать многомерный массив FRIE Общие вопросы Javascript 29 02.06.2010 19:14
Подскажите, как вернуть js-скрипт массив Polkan AJAX и COMET 18 30.04.2010 23:30