Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.02.2015, 16:07
Новичок на форуме
Отправить личное сообщение для Onix13 Посмотреть профиль Найти все сообщения от Onix13
 
Регистрация: 16.02.2015
Сообщений: 2

Определить содержимое блока
Товарищи, добрый день. Очень мало изучаю java и jquerry, поэтому даже при решении простой (на мой взгляд) задачи испытал крайние затруднения. Очень надеюсь на вашу помощь!

Итак, дано:
Два блока div с каким-то содержимым, например
<div class="js-loader">
	111
</div>

<div class="js-loader">
	<iframe>222</iframe> // вставляется через сторонний script
</div>


(По сути первый блок без iframe создан для проверки работоспособности скрипта)

Задача: проверять содержимое div, и, если там есть iframe, то убирать дополнительный класс, если флэйма нет (aka грузится скрипт) - то добавляем доп. класс (который рисует картинку подгрузки на время, пока скрипт не подгрузится и не появится iframe).
Пока не берем тот момент, что возможно, скрипту нужно будет периодически проверять содержимое блока (чтобы на момент подгрузки скрипта повторить свой алгоритм)

Что смог сделать я:
<script type="text/javascript">
	$(document).ready(function()
	{
		if ($('.js-loader').children("iframe")) {
		   $('.js-loader').removeClass( "js-post-loader" ); // если iframe есть - убираем класс
		} else {
		   $('.js-loader').addClass( "js-post-loader" );  // если iframe нет - добавляем класс, который в бэкграунд пропишет значек загрузки
		}

	});		
</script>


В чем проблема: как мне объяснили, "if" работает с булевым значением, а у меня - массив данных, поэтому "if" всегда срабатывает как true. Скорее всего скрипт должен выглядеть как-то иначе. Я буду вам ОЧЕНЬ благодарен за подсказки.

Всем заранее огромное спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 16.02.2015, 16:17
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от Onix13
Что смог сделать я:
Как вариант...

<!DOCTYPE html>
<html ng-app>
<head>
<script src='http://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="http://code.angularjs.org/1.1.4/angular.min.js"></script>
<link rel='stylesheet type=text/css href=tmp.css' />
-->
<style type='text/css'>
.js-post-loader {
	border: 1px solid red;
}
</style>
<script type='text/javascript'>
$(function(){
	$('.js-loader').each(function(){
		if ($(this).find('iframe').length==0) {
			$(this).addClass('js-post-loader');
		} else {
			$(this).removeClass('js-post-loader');
		};
	});
});
</script>
</head>
<body> 
<div class="js-loader">
	111
</div>
<div class="js-loader">
	<iframe>222</iframe>
</div>
</body>
</html>
Ответить с цитированием
  #3 (permalink)  
Старый 16.02.2015, 16:46
Новичок на форуме
Отправить личное сообщение для Onix13 Посмотреть профиль Найти все сообщения от Onix13
 
Регистрация: 16.02.2015
Сообщений: 2

Спасибо, заработало!

Стал искать, как заставить скрипт перезапускаться автоматически? Нашел вариант с return но не понял, как применять (гипер-новичек в jquerry, что сказать).

По логике:
если скрипт не нашел iframe то ему нужно вернуться, и повторять алгоритм до тех пор, пока не найдёт (пока фрэйм не подгрузится) . Можно поставить время перезапуска 1-3 секунды, если это имеет значение.

Спасибо!

Последний раз редактировалось Onix13, 16.02.2015 в 16:57.
Ответить с цитированием
  #4 (permalink)  
Старый 16.02.2015, 20:54
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

>вернуться, и повторять алгоритм до тех пор, пока не найдёт (пока фрэйм не подгрузится)

$(function(){}) - это все что будет исполняться после загрузки документа, следовательно iframe будет на странице.

Если же это означает, что необходимо выполнить нечто после загрузки документа в iframe, то нужен не таймер, а обработка его события onload.
Ответить с цитированием
  #5 (permalink)  
Старый 16.02.2015, 22:44
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,123

Сообщение от Onix13
как заставить скрипт перезапускаться автоматически?
Если я правильно понял, можно использовать метод setTimeout()...
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как переместить содержимое блока в другой блок? Vladislav Общие вопросы Javascript 7 06.12.2015 17:22
Определить высоту блока другой страницы Vladimir_Kl Javascript под браузер 12 07.07.2012 17:42
Событие при наведение мыши, которое раскроет содержимое блока (элемента)... aklak Элементы интерфейса 3 27.03.2012 11:30
По клику на ссылку меняем содержимое внутри блока goooooch Общие вопросы Javascript 6 26.01.2011 15:25
Определить кроссбраузерно высоту блока. TaskO Элементы интерфейса 5 18.07.2010 09:54