var items = document.querySelector('.page-content');
я вешаю обработчик на родителя, затем ловлю на каком элементе происходит событие. когда событие наступает - нужно снять обработчик. а он не снимается. подозреваю, что проблема в передаче функции через handler в addEventLiustener. |
Dilettante_Pro,
строка 1 и строка 5 ??? |
Dilettante_Pro,
я и не передаю, всего лишь отслеживаю на каком элементе произошло событие, и при всплытии срабатывает обработчик. на этом этапе у меня все работает. проблема только в снятии события. пример выше у меня не работает ни на сайте, ни после перетягивания в редактор :( стурктура элементов в вашем примере была правильная page-content - родитель item-actions__cart - вложенные элементы |
рони, спасибо, я уже заметил.
Не снимается. <div class = 'page-content'>page-content <div >Content</div> <div class = 'item-actions__cart'>Content Cart</div> <div >Content</div> </div> <script> var fnCounter = function (e) { var target = e.target; alert(target.textContent); if (target.classList.contains('item-actions__cart')) { items.removeEventListener('click', fnCounter); } }; var items = document.querySelector('.page-content'); items.addEventListener('click', {handleEvent: fnCounter, e: event}); </script> |
Вот так снимается
<div class = 'page-content'>page-content <div >Content</div> <div class = 'item-actions__cart'>Content Cart</div> <div >Content</div> </div> <script> var fnCounter = function (e) { var target = e.target; alert(target.textContent); if (target.classList.contains('item-actions__cart')) { items.removeEventListener('click', fnCounter); } }; var items = document.querySelector('.page-content'); items.addEventListener('click', fnCounter); </script> Очевидно, EventListener считает, что fnCounter и handleEvent: fnCounter - разные функции |
Dilettante_Pro,
да, у меня тоже самое происходит. событие срабатывает, но снять его не могу. |
alecto,
Пост 25 видели? |
да, теперь увидел.
решение оказалось очень простым. спасибо огромное, ваш сайт просто незаменимый ресурс по JS! |
alecto,
Цитата:
|
Часовой пояс GMT +3, время: 18:27. |