Если мы работаем с одним элементом. Мы все события вешаем только на один элемент. На родителя скрипта. То все остальные нам просто не к чему. Это уже дело самого скрипта. Привязка нужна только чтобы найти один единственный родительский элемент. На мой взгляд очень просто.
Крстати нашел тот глюк о котором упоминал в начала. Вот в таком скрипте <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 ее нет. |
Это всетаки как то связано с загрузкой. При добавлении 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,
какой load и e.currentTarget в load вы ждёте ?? |
mpak,
что хоть хочешь в коде сделать , что у тебя не работает? |
Цитата:
|
События click вешаются отлично. Это все заработало. Но нужно событие которое сработает после загрузки так как выше я написал что если сразу делать через each то элемент еще не прогрузился и в нем нет ничего посмотреть можно здесь https://tiggy.ru/blockchain:test/null первый вывод main.outerHTML: не содержит ничего, так как в элементе ничего нет поэтому и нужно событие, при котором прогрузится элемент и можно будет работать с его содержимым.
|
Для начала тебе самому нужно разобраться в том чего же ты хочешь добиться.
т.е. на отдельном листке бумаги нарисуй небольшую схемку что и в какой последовательности загружается что в этом момент запускается и что и после чего должно запустится =) |
Часовой пояс GMT +3, время: 12:19. |