Как сократить код и стоит ли это делать для целей в метрике?

как сократить код?

$(".copy_header_mail").bind('copy', function() {
    ym(666777888, 'reachGoal', 'copy-header-email');
    return true;
});
$(".copy_header_phone").bind('copy', function() {
    ym(666777888, 'reachGoal', 'copy-header-phone');
    return true;
});

$(".copy_footer_mail").bind('copy', function() {
    ym(666777888, 'reachGoal', 'copy-footer-email');
    return true;
});
$(".copy_footer_phone").bind('copy', function() {
    ym(666777888, 'reachGoal', 'copy-footer-phone');
    return true;
});

Ответы (1 шт):

Автор решения: ksa

как сократить код?

Например можно сделать вот так...

const fn = (s1, s2) => {
    const s = s2 ?? s1
    $(s1).bind('copy', function() {
        ym(666777888, 'reachGoal', s);
        return true;
    });
}
fn('.copy_header_mail', 'copy-header-email')
fn('.copy_header_phone')
fn('.copy_footer_mail', 'copy-footer-email')
fn('.copy_footer_phone')

Или вообще вот так...

[
    ['.copy_header_mail', 'copy-header-email']
    ['.copy_header_phone']
    ['.copy_footer_mail', 'copy-footer-email']
    ['.copy_footer_phone']
].forEach(a => {
    $(a[0]).bind('copy', function() {
        ym(666777888, 'reachGoal', a[1] ?? a[0]);
        return true;
    });
})
→ Ссылка