Я уже условия раз пять написал в теме. И не раз уже мне предлагают id ставить. Почитай http://xpoint.ru/forums/programming/javascript/misc/thread/36850.xhtml у чувака такая же ситуация.
Как раз это не на все случае жизни. Куча условий и возни с этим. Нужно каждому элементу выствалять уникальный id плюс проконтролировать чтобы таких id уже небыло в коде А это те требования которые писал ранее: Кто из нас тупой? Что здесь если не решение с использованием id? Если нет, значит не смог обьяснить. Код в студию! Добавлено спустя 7 минут 58 секунд: Немного модифицировал предыдущие код Код (Text): <script> console.log("Скрипт "+ (tmp = 1), document.getElementsByTagName('script').length) </script> <script> console.log("Скрипт_"+ ++tmp, document.getElementsByTagName('script').length) </script> <script> console.log("Скрипт_"+ ++tmp, document.getElementsByTagName('script').length) </script> <script> console.log("Скрипт_"+ ++tmp, document.getElementsByTagName('script').length) </script> <script> console.log("Скрипт_"+ ++tmp, document.getElementsByTagName('script').length) </script> Выдает: Код (Text): Скрипт_1 11 Скрипт_2 11 Скрипт_3 11 Скрипт_4 11 Скрипт_5 11
а можно поинтересоваться практическим применением данной технологии? джаваскрипт в phar и без этого геморра должен залетать на ура
Где то в тексте этой темы было что то про phar? Или это попытка потролить? Есть вполне конкретная задача. С вполне вменяемыми требованиями. Решения насколько понимаю нет ни у кого. Странна сама ситуация, когда в яваскрипте нельзя однозначно обратится к элементу дом. Более того с ним вообще не получится никак работать вы его просто не сможете идентифицировать. Даже без какой то практической цели. В прошлый раз я не смог вам показать практическое применение моего решения. Думаю и в это раз у меня это не получится. Нет желания вас в чем то убеждать. Не видите ценности - не используйте. Я просто хочу иметь решение - обратиться хоть как то к элементу script в котором работает этот скрипт.
нет, что ты. Тут ща все охуенно наморщили лбы исключительно над твоей проблемой. Мне кажется это очевидно. Добавлено спустя 2 минуты 6 секунд: можно закрыть темку?
Задача была решить ее а не убедить кого то в практическом ее применении. Задача все еще не решена. Хотелось бы все-таки пообщаться с теми кому интересно ее решение и послушать тех, кто в этом понимает.
да ты можешь сказать на кой хер надо-то это? мне ж интересно. или как в случае с фаром мы нихера от тебя не добьемся кроме громких выкриков в стиле "Вы все дураки и не лечитесь! Одна я умная, в белом пальто стою красивая!". блин, с тобой общаться невозможно. ты какой-то агрессивный. тебя надо в наморднике со строгим ошейником на цепи в клетке держать... прям фу. вот спросишь по делу а в ответ ушат говна. и потом ходи думай как с такими моральными уродами интеллигентно общаться... потролить его нельзя понимаешь ли неженка какая. дык если бы ты в той теме в кусты не побежал не было бы повода над тобой прикалываться. кстати извини за жалобу на твой аккаунт вКонтакте. реально не понимаю владельцев магазинов которые догоняют ушедших от них без покупок клиентов. судя по статусу "временно заморозили" - админы вконтактика тоже не понимают таких уродов.
Слушай отстнь от меня тролина!!!! Я же обьяснил что не считаю нужным тебе что то обьяснять. Не знаешь решение иди пасись. Дай пообщаться с людьми которые понимают как это сделать а не сидят и не едят мозг зачем это нужно. Есть дети "Почемучки" ты похож на них "А зачем ка?" Засераешь каждую тему своими вопросами. Достал уже. Тебе не понять. Пей "ростишку". Вырастешь поймешь.
мы на профессиональном форуме. человек пытается создать какую-то технологию. но у него этого не получается. я хочу знать истинную первопричину возникновения данной задачи. может я смогу ее решить, запатентую и потом буду ему в аренду сдавать. я ж плохой =)
Какой ты душный. На профессиональном форуме вопрос "А зачем это" не задают. Если ты здесь предполагается, что ты уже знаешь зачем это. Если не знаешь - тебе тут не место. Иди на форум философов и задавай вопросы, Где? да почему?
Прямо спас. А то бы эта зверюга меня сожрала. Я даже почувствовал смрад из его пасти. Чуть чуть и все капут. Так троли и жрут нормальных людей. Фу, пронесло.
Не боись, братуха! Мы тя в обиду не дадим. Тут место мирное. Ладно, короче проехали. Зачем это надо было если расскажешь - ты очень расслабишь пару мозгов. А то у меня реально защемило так, что я не могу придумать ни одного применения этому делу.
Все свои яваскрипт интерфейсы я привязываю к одному элементу. Обычно это div с классом content это удобно так как при добавлении удалении вложенных элементов не приходится к ним повторно навешивать события как это было с .live(). Выглядит это примерно так Код (Text): $(function(){ $(".content").on("click", ">div", function(e){ // непосредственный ребенок div родительского элемента $(e.delegateTarget).find( что то ищем внутри .content }).on("change", "select", function(e){ // Все вложенные выпадающие списки $(this).remove() Удаляем этот селект }); }) И все основые триггеры давно уже написаны все сводится к банальному копированию скрипта или его части из страницы в страницу. Обращение внутри скрипта происхоит внутри этого элемента .content если нужно что то искать то я ищу это в e.delegateTarget как бы все логично. Такой подход исключает влияние скрипта на все вышестоящие элементы как бы они не назывались и где бы не находились. Для того, чтобы привязать все скрипты к странице остается только указать класс элемента к которому все будет привязанно. Но осталась одна заморока. Мне каждый раз приходится выбирать этот единственный обьект назначать ему класс и указывать его же в скрипте. Опять же это не исключает другой ошибки дублирования классов и идентификаторов внутри страницы. Часто это чужие страницы структуры которой я вообще не знаю и не хотел бы что то в нем менять. Но последнее время это происходит часто я подумал что будет удобно сделать один раз привязку к родителю элемента в котором находится сам скрипт. Для этого собственно и нужно. Логика своидилась бы к премитивной где лежит скрипт для того обьекта он и работает. Перемещение его внутри страницы могло бы менять владельца всех событий и триггеров без какого бы то нибыло изменеения верстки.
даже не буду спрашивать, зачем ты это делаешь. не понял, почему? откуда может взяться дубль? ну поправишь при дебаге разок. Это какая-то уникально редкая ситуация, которая даже если возникает, то отсеивается на этапе разработки. А идею пихать весь js тотально вниз, к закрывающему тегу </body> ты в принципе отвергаешь, как еретическую?
Скрипт пример которого привел выше обыно законченное решение, которое реализует какую то уже законченную логику. Типа плагина. Но чтобы вставить в страницу его нужно к чему то привязать. То внутри чего он будет работать, искать свои элементы отслеживать их события. Выше это .content но может быть и корневой див внутри какого то из логических блоков. Логика от этого не меняется мы берем верхний див блока и все на него вешаем гарантируя работу скрипта только внутри этого блока. По закону мерфи если что то имеет шанс произойти это обязательно произойдет. Работая с верстальщиками или с другими программистами я не могу им дать список классов запрещенных к использованию на сайте. Это просто не удобно. Сам он не имеет возможности проверить какие идентификаторы уже есть на страницу. В зависимости от логики в любой момент отображается не вся верстка на странице. Опять же бывало когда в один прекрасный момент все валится. А после выяснения оказывается, что верстальщик постаивл такой класс где то в другом место вся логика поломалась и все перестало работать. Поэтому позаботится о том, чтобы мой скрипт не пересекался даже чисто теоретически с другими скриптами становится моей задачей. К тому же человек плохой генератор случайных классов. Если элемент что то добавляет на странице девять из десяти что он будет назван .add Мне приходилось видеть несколько id="content" один это как правило див с контентом, второй это где то внутри блока. Верстальщик посчитал, что он уникальный и никто больше не в праве использовать такой же id. В итоге пусть верстаки используют свои классы и id как хотят. Есть желание максимально уйти от использования каких то идентификаторов используя в качестве основного один единственный элемент родитель скрипта без модификации его классов и id все привязывание скрипта в этом случае будет выглядеть просто размещением в родительском элементе скрипта. Модификации самого родительского элемента и скрипта не потребуется. Я бы даже сказал, что для меня использование идентификатров в верстке это процесс крайней надобности. Возможно даже плохого тона. И от него нужно максимально избавляться. Опять же не уверен смог ли передать свою мысль правильно.
что мешает завеситься на класс/id и если такого нет, то и всё, а если есть, то и само собой пашет. Не? Это назвыается параноя. можно тупо использовать префиксы. Плохой человек! Фу! =) зачем ты это говоришь всё? Ну можно же не ожидать 100% равномерного генерирования по всему полю 1-32 символов в имени класса. Ты какой-то перегретый. Боишься вещей, которые ну скажем так не сильно обычно кого пугают... Может в отпуск? айдишников не так много, чтобы уж не выписать их на листочек. а, ну ладно. Ты всё ж подумай о префиксах.
ПКСС! Так же стараюсь не использовать id и class, без фанатизма, конечно. После полной загрузки страницы можно найти любой <script> по его расположению в HTML: document.getElementsByTagName('script')[порядковый номер] Других способов, не используя прямо или косвенно каких либо идентифицирующих атрибутов, науке не известно. Кстати, в хромиуме проверил, работает мой пример))
Вся эта тема и сводится посути к задаче где этот порядковый номер взять? Это бы решило все проблемы. Как получается что у нас chromium по разному работает? А я кажестя понимаю почему. У меня кусок кода загружается по аяксу. Возможно это повлияло на то, что у меня во всех скриптах одинаковый порядковый номер. Надо проверить. Если это так, это частично решает проблему. Действительно првоерил. Не работает только если верстка с кодом по аяксу грузиться. Моя ошибка проверял именно на такой странице и удивлялся почему не работает. В принципе этим уже можно принебречь. Опять же к вопросу о Законе мерфи. Вроде все учел, но обязательно вылезит какой нибудь баг. Спасибо помогли решить проблему. Спасибо большое.
Еще один момент. Глюк который вылез раз уж разбираем ситуацию до конца. Если оборачивать все оберткой жкверивской. А идентификатор скрипта нам нужен внутри жквери. Код (Text): $(function(){ var script = document.scripts[document.scripts.length-1]; console.log("script:", script); }) То скрипт снова не тот. Думаю это из за того что инициализация jquery идет после загрузки всего документа. После небольшой модификации и эту проблему удалось обойти. Похоже, что это окончательно работчий вариант Код (Text): <div> <!-- контейнер на который повиснут все события --> <script> $(function(script){ $(script).parent().on("change", "select", function(e){ Код при обработке элемента }); }(document.scripts[document.scripts.length-1])); </script> <div> <select></select> </div> </div>