С Новым годом! Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
4 / 4 / 2
Регистрация: 27.12.2014
Сообщений: 248

Как выделить такую функцию для последующей привязки

23.05.2024, 19:47. Показов 578. Ответов 7

Студворк — интернет-сервис помощи студентам
JavaScript
1
2
3
4
5
6
7
8
9
10
11
function makeFancy(el){
    el.getAll("[data-src]").forEach((item,index,items)=>{
        item.addEventListener("click",(e)=>{
 
            window.items=items
 
            //далее в коде items еще используется
 
        })
    })
}
Как выделить эту функцию click в отдельную? Как потом передавть параметр items?
Это нужно чтобы можно было потом отвязать ее по названию

JavaScript
1
2
item.addEventListener("click",funcName)
item.removeEventListener("click",funcName)
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.05.2024, 19:47
Ответы с готовыми решениями:

Как реализовать такую функцию для TextBox?
Очень хочу реализовать такую фичу в моем проекте, а именно, чтобы после нажатия на TextBox, серая надпись "Логин" в нем...

Как задать такую функцию?
x^2+(y^2)\cdot(z^3) = z^4 Как вот такую функцию задать в matlab?

Как минимизировать такую функцию?
Функция def Phi(u, X): return -(1+u*X+u*X+u*X+u*X) Известно, что : 1) X...X находятся в промежутке 2) u,u,u,u...

7
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3809 / 1647 / 428
Регистрация: 14.03.2022
Сообщений: 4,113
27.05.2024, 11:04
Цитата Сообщение от axmed2004 Посмотреть сообщение
Как выделить эту функцию click в отдельную?
Например так...

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function makeFancy(el){
    el.getAll("[data-src]").forEach((item,index,items)=>{
        const funcName = test(items)
        item.addEventListener("click", funcName)
    })
}
 
//
function test(items) {
   return e => {
       window.items=items
       //и так далее
   }
}
0
4 / 4 / 2
Регистрация: 27.12.2014
Сообщений: 248
27.05.2024, 13:19  [ТС]
krvsa, уточнение:

JavaScript
1
2
3
4
5
6
item.addEventListener("click",(e)=>{
    e.preventDefault()
    e.stopPropagation()
 
    //....
}
как передать е в функцию test()?
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3809 / 1647 / 428
Регистрация: 14.03.2022
Сообщений: 4,113
27.05.2024, 14:22
Цитата Сообщение от axmed2004 Посмотреть сообщение
как передать е в функцию test()?
Ты так и не понял что я в итоге тебе предложил...

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function makeFancy(el){
    el.getAll("[data-src]").forEach((item,index,items)=>{
        const funcName = test(items)
        item.addEventListener("click", funcName)
    })
}
 
//
function test(items) {
   return e => {
       e.preventDefault()
       e.stopPropagation()
       window.items=items
       //и так далее
   }
}
0
4 / 4 / 2
Регистрация: 27.12.2014
Сообщений: 248
27.05.2024, 15:06  [ТС]
krvsa, был невнимателен. А как отвязать функцию?

JavaScript
1
2
3
4
5
6
7
8
9
function makeFancy(el){
el.getAll("[data-src]").forEach((item,index,items)=>{
    const func=f(item,index,items)
    item.removeEventListener("click",func)
    item.addEventListener("click",func)
}
 
get(".p_images").fancy()
get(".p_images").fancy()
не отвязывает. срабатывает 2 раза
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3809 / 1647 / 428
Регистрация: 14.03.2022
Сообщений: 4,113
27.05.2024, 15:16
Цитата Сообщение от axmed2004 Посмотреть сообщение
не отвязывает
Нужно "отвязывать" то, что привязал.

Но, судя по приведенным тобой кускам, похоже ты не верно пытаешься решать свою проблему.
Сначала вешаешь кучу одинаковых обработчиков... Потом (зачем-то) их удаляешь...

Например можно применить "делегирование", т.е. повесить один обработчик на родителя, нужных тебе элементов. Если он потом будет не нужен - его одного удалить.
0
4 / 4 / 2
Регистрация: 27.12.2014
Сообщений: 248
27.05.2024, 15:23  [ТС]
krvsa, написал свой fancybox. Есть блок с картинками, при вызове блок.fancy() на каждую картинку внутри вешается клик. В блоках с картинками могут быть изменения, добавление/удаление картинок. Для новых картинок вызываю опять .fancy(), и старые получают еще один обработчик. Поэтому нужно сначала удалить, а потом повесить заново
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3809 / 1647 / 428
Регистрация: 14.03.2022
Сообщений: 4,113
28.05.2024, 10:18
Лучший ответ Сообщение было отмечено axmed2004 как решение

Решение

axmed2004, считаю твой подход не верным...
Делай один обработчик на родителя. Пусть он определяет на чем кликнули и делает нужные действия.
Т.о. ничего даже удалять не нужно.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.05.2024, 10:18
Помогаю со студенческими работами здесь

Как минимизировать такую функцию?
Есть список значений Y и список X и я хочу минимизировать функцию такого вида(прикрепил картинку). Также есть начальные значения...

Как описать такую функцию?
Ето опять я Пожалуйсто подскажите как описать функцию так чтобы она принимала не 1 комбинацию параметров а много, так как на рисунке? ...

как написать такую функцию
Помогите пожалуйста написать функцию, формирующую таблицу символов и их кодов из заданного диапазона.

Как организовать такую функцию
имеется два параметра h и w, каждой паре значений h и w соответствует c. как получить с зная h и w. Пример: Дано h: 10,...

Как записать такую функцию
Помогите (2n)!!, где (2n)!!=2*4*...*(2n)


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru