Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 15.12.2014, 11:42
Интересующийся
Отправить личное сообщение для mpak Посмотреть профиль Найти все сообщения от mpak
 
Регистрация: 13.12.2014
Сообщений: 13

Если мы работаем с одним элементом. Мы все события вешаем только на один элемент. На родителя скрипта. То все остальные нам просто не к чему. Это уже дело самого скрипта. Привязка нужна только чтобы найти один единственный родительский элемент. На мой взгляд очень просто.

Крстати нашел тот глюк о котором упоминал в начала.

Вот в таком скрипте

<div>
	<script>
		(function($, script){
			$(script).parent().on("click", "a", function(e){
				var name = $(e.currentTarget).text();
				alert(name);
			}).each(function(n, main){
				console.log("main.outerHTML:", main.outerHTML);
			});
		})(jQuery, document.scripts[document.scripts.length-1])
	</script>
	<a href="">Клик</a>
</div>


main.outerHTML почему то нет содержимого ссылки. Блок просто пустой. Это также проявляется при поиске. Элементы просто не находятся. А мне они нужны при обработке. Изменить их при загружке. Кто знает почему?

Странно. Здесь почему то выводит. Вот страница на которой пробую то же самое сделать и в ней нет содержимого. https://tiggy.ru/blockchain:test в ней нет ссылки <a href="">Клик</a> хотя она физически есть в блоке. Об этом глюке я говорил выше. Здесь можно посмотреть без шаблона то же самое https://tiggy.ru/blockchain:test/null на странице есть ссылка, а в выводе main.outerHTML ее нет.

Последний раз редактировалось mpak, 15.12.2014 в 11:52.
Ответить с цитированием
  #12 (permalink)  
Старый 15.12.2014, 11:57
Интересующийся
Отправить личное сообщение для mpak Посмотреть профиль Найти все сообщения от mpak
 
Регистрация: 13.12.2014
Сообщений: 13

Это всетаки как то связано с загрузкой. При добавлении setTimeout все отобразилось. Хотя по логике сам jquery в обертке и должен загружаться уже после того, как все элементы прогружены. Получается, что даже с оберткой есть моменты, когда элементы прогружаются не полностью. Как в данном случае. Если загружать с интервалом или по нажатию, то все нормально. Как это можно обойти?

Как то так было бы отлично. Но опять же что то не работает.

<div>
	<script type="text/javascript" src="//code.jquery.com/jquery-latest.js"></script>
	<script>
		(function($, script){
			$(script).parent().on("click", "a", function(e){
				var name = $(e.currentTarget).text();
				alert(name);
			}).one("load", function(e){
				console.log("main.outerHTML:", $(e.currentTarget).get(0).outerHTML);
				setTimeout(function(){
					console.info("main.outerHTML setTimeout:", $(e.currentTarget).get(0).outerHTML);
				}, 100);
			});
		})(jQuery, document.scripts[document.scripts.length-1])
	</script>
	<a href="">Клик</a>
</div>


Событие }).one("DOMNodeInserted", function(e){ также не срабатывает.

Такой вариант }).one(function(e){ тоже не работает.

Последний раз редактировалось mpak, 15.12.2014 в 12:28.
Ответить с цитированием
  #13 (permalink)  
Старый 15.12.2014, 12:33
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,129

mpak,
какой load и e.currentTarget в load вы ждёте ??
Ответить с цитированием
  #14 (permalink)  
Старый 15.12.2014, 12:34
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,129

mpak,
что хоть хочешь в коде сделать , что у тебя не работает?
Ответить с цитированием
  #15 (permalink)  
Старый 15.12.2014, 12:38
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,129

Сообщение от mpak
main.outerHTML почему то нет содержимого ссылки
а с чего она должна быть если парсер в див только скрипт ещё вставил а до ссылки не добрался
Ответить с цитированием
  #16 (permalink)  
Старый 15.12.2014, 12:40
Интересующийся
Отправить личное сообщение для mpak Посмотреть профиль Найти все сообщения от mpak
 
Регистрация: 13.12.2014
Сообщений: 13

События click вешаются отлично. Это все заработало. Но нужно событие которое сработает после загрузки так как выше я написал что если сразу делать через each то элемент еще не прогрузился и в нем нет ничего посмотреть можно здесь https://tiggy.ru/blockchain:test/null первый вывод main.outerHTML: не содержит ничего, так как в элементе ничего нет поэтому и нужно событие, при котором прогрузится элемент и можно будет работать с его содержимым.
Ответить с цитированием
  #17 (permalink)  
Старый 15.12.2014, 13:46
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,138

Для начала тебе самому нужно разобраться в том чего же ты хочешь добиться.
т.е. на отдельном листке бумаги нарисуй небольшую схемку что и в какой последовательности загружается что в этом момент запускается и что и после чего должно запустится =)
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить данные из php скрипта в расширении для Safari? housewm Opera, Safari и др. 2 19.12.2013 18:31
ООП наследование. Как получить доступ к методам родителя? ShuggyBumblebee Общие вопросы Javascript 5 04.12.2013 00:44
Можно ли в жс получить родителя метода? grifangel Общие вопросы Javascript 5 26.10.2013 12:40
получить непрямого родителя torsar Events/DOM/Window 2 14.03.2013 10:33
Получить результат выполнения скрипта на сервере в переменную ява gyper AJAX и COMET 5 19.11.2012 11:36