Не могу понять, почему не работает код

Видимо, вопрос в this? Или как для элемента, на котором произошло событие, выполнить функцию?

function color() {
        $(this).children().css('backgroundColor','red');
    }
    
$('#one').click(function () {
    color();
});
$('#two').click(function () {
    color();
});
.item{
        display: block;
        height: 50px;
        margin-bottom: 50px;
        border: 1px solid #0C9A9A;
    }
    .item div{
        display: block;
        height: 100%;
    }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="one" class="item">
    <div></div>
</div>
<div id="two" class="item">
    <div></div>
</div>


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

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

Проблема в данном коде в обращении к контексту. В примере который вы добавили, this будет равен undefined т.к. функция color вызывается напрямую. Вам необходимо использовать следующий код:

function color(target) {
    $(target).children().css('backgroundColor','red');
}

$('#one').click(function (e) {
    color(e.currentTarget);
});
$('#two').click(function (e) {
    color(e.currentTarger);
});

Выше также добавили хороший вариант, передавать эту функцию как колбек. Он в принципе более предпочтительный.

→ Ссылка
Автор решения: Igor
$('#one').click(color);
$('#two').click(color);
→ Ссылка