Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> События для только-что добавленного html-а. 
V
    Опции темы
diadiavova
Дата 12.8.2009, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 11
Всего: 142



Я статью просмотрел поверхностно, и понял, что видимо ты имел в виду это
Цитата

Переопределение событий относится к методам уменьшения приемников событий (event listeners), которые назначены документу, путем определения одного приемника для контейнера и проверки в обработчике, из какого дочернего элемента всплыло (bubbled up) это событие.

Попробовал реализовать такое в приведённом выше примере
Код

<html>
<head>
    <title>Untitled Page</title>

    <script type="text/javascript">

        function ins_onclick()
        {
            var cont = document.getElementById("content");
            for (var i = 0; i < 10; i++)
            {
                cont.innerHTML += "<input type='text' id='txt" + i.toString() + "' ><br>";
            }
        }

        function addHdlrs_onclick()
        {
            var cont = document.getElementById("content");
            cont.onclick = txtClick;
            cont.onfocus = txtFocus;
            cont.onblur = txtBlur;
        }
        function addFocBl_onclick()
        {
            var cont = document.getElementById("content");
            for (var i = 0; i < cont.childNodes.length; i++)
            {
                var cur = cont.childNodes.item(i);
                if (cur.nodeName.toLowerCase() == "input" && cur.type == "text")
                {
                    cur.onfocus = txtFocus;
                    cur.onblur = txtBlur;
                }
            }
        }

        function txtClick(e)
        {
            var e = e || window.event;
            var targ = e.target || e.srcElement;
            addStatus(targ.id + " clicked");
        }
        function txtFocus(e)
        {
            var e = e || window.event;
            var targ = e.target || e.srcElement;
            addStatus(targ.id + " focused");
        }

        function txtBlur(e)
        {
            var e = e || window.event;
            var targ = e.target || e.srcElement;
            addStatus(targ.id + " not focused");
        }

        function setStatus(val)
        {
            var st = document.getElementById("status");
            st.innerHTML = val;
        }

        function addStatus(val)
        {
            var st = document.getElementById("status");
            st.innerHTML += "<br>" + val;
        }
    </script>

</head>
<body>
    <div id="content">
    </div>
    <input id="ins" type="button" value="Создать объект" onclick="return ins_onclick()">
    <input id="addHdlrs" type="button" value="Добавить события клик" onclick="return addHdlrs_onclick()">
    <input id="addFocBl" type="button" value="Добавить события фокус и блар" onclick="return addFocBl_onclick()">
    <div id="status">
    </div>
</body>
</html>



Событие click действительно отлавливается таким образом, но ведь речь шла о других событиях, а с ними этот трюк не прокатывает. Между тем топикастер указал, что с кликом проблем нет и его интересовали именно события фокус и блар.

В данном примере две кнопки, добавляющие обработчики события. Первая добавляет обработчики для всех трёх событий контейнера, но в результате отлавливаются только клики, вторая - назначает обработчики для каждого элемента в цикле и всё работает как надо.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
mxt
Дата 12.8.2009, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 6.9.2007

Репутация: нет
Всего: 1



да,   малость сглупил.

а вообще,  фокус это почти тоже mousedown,     вызывается в одно и тоже время.  так что можно заменить. 
--------------------
PM MAIL   Вверх
diadiavova
Дата 12.8.2009, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 11
Всего: 142



Цитата(mxt @  12.8.2009,  22:07 Найти цитируемый пост)
а вообще,  фокус это почти тоже mousedown,     вызывается в одно и тоже время.  так что можно заменить.  

Фокус можно и от табулятора получить и от клавиш быстрого доступа, да и если не ошибаюсь не все объекты вообще это событие инициируют(focus), просто после кликов и маусдауна элемент как правило получает фокус, но смешивать эти события всё-таки не стоит smile 


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
mxt
Дата 12.8.2009, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 6.9.2007

Репутация: нет
Всего: 1



все зависит от того, для чего это делается.  относительно подписи топикстартера,  думаю что это нужно для чата.  только вот где именно
--------------------
PM MAIL   Вверх
Elfet
Дата 13.8.2009, 00:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Белый и Пушистый
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 3776
Регистрация: 2.4.2003

Репутация: нет
Всего: 16



Я в чате использую "нативные" javascript шаблоны. И для них мне это нужно smile


--------------------
PM MAIL WWW Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0448 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.