Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Как можно сократить этот код? (https://javascript.ru/forum/jquery/83364-kak-mozhno-sokratit-ehtot-kod.html)

Andrew Kolomiets 23.11.2021 08:18

Как можно сократить этот код?
 
$(`.buy${i}`).click(() => {
            $(`.pict${i}, .buy${i}`).hide(),
            $(`.otmena${i}, .bought${i}`).fadeIn(300);
        }),
        $(`.pict${i}`).dblclick(()=>{
            $(`.pict${i}, .buy${i}`).hide(),
            $(`.otmena${i}, .bought${i}`).fadeIn(300);
        })

ksa 23.11.2021 08:33

Цитата:

Сообщение от Andrew Kolomiets
Как можно сократить этот код?

Как вариант...
const i = 1
const fnc = _ => {
	$(`.pict${i}, .buy${i}`).hide(),
	$(`.otmena${i}, .bought${i}`).fadeIn(300);
}
$(`.buy${i}`).click(fnc),
$(`.pict${i}`).dblclick(fnc)

Andrew Kolomiets 23.11.2021 08:40

Спасибо, метод рабочий!

ksa 23.11.2021 08:52

Andrew Kolomiets, если бы было еще больше "дубляжа", можно было бы еще и так завернуть... :)
const o = {
	buy: 'click',
	pict: 'dblclick'
}
// тут цикл по i
const fnc = _ => {
	$(`.pict${i}, .buy${i}`).hide(),
	$(`.otmena${i}, .bought${i}`).fadeIn(300);
}
for (cls in o) $('.' + cls + i).on(o[cls], fnc)

Andrew Kolomiets 23.11.2021 09:26

ksa, а почему именно так? Это будет работать быстрее, нежели просто весь код в for?

ksa 23.11.2021 12:06

Цитата:

Сообщение от Andrew Kolomiets
а почему именно так?

Я просто показал как еще можно заменить вот это
$(`.buy${i}`).click(fnc),
$(`.pict${i}`).dblclick(fnc)


Цитата:

Сообщение от Andrew Kolomiets
Это будет работать быстрее, нежели просто весь код в for?

Что-то мне подсказывает, что в твоем случае можно вообще без циклов обойтись... :)
Т.е. уйти от использования переменной i.

Но для этого нужно знать с каким хтмлем ты работаешь... :-?


Часовой пояс GMT +3, время: 22:17.