JSFiddle - React, Tailwind, and code Playground

HTML

<div class="box" data-id="1">Primeiro texto</div>
<div class="box" data-id="2">Segundo texto <a class="link">Clique aqui</a>

</div>
<div class="box" data-id="3">
<a class="link">Clique aqui</a>

</div>
<div class="box" data-id="4">Testando</div>

JavaScript

function temSoClasse(elInicial, seletor) {
    var soLink = $(elInicial).filter(function () {
        var hasLink = false;
        var nodes = $(this.childNodes).filter(function (i, el) {
            if (el.nodeType == 1) {
                if ($(el).parent().find(seletor).length) hasLink = true;
                return true;
            }
            return el.textContent.trim().length;
        });
        return nodes.length == 1 && hasLink;
    });
    return soLink;
}

function temSoClasse2(elInicial, seletor) {
    var soLink = $(elInicial).filter(function () {
        //var hasLink = false;
        return $(this).find(seletor).length > 0 && $(this.childNodes).filter(function (i, el) {
            /*if (el.nodeType == 1) {
                if ($(el).parent().find(seletor).length) hasLink = true;
                return true;
            }*/
            return el.textContent.trim().length;
        }).length == 1;
    });
    return soLink;
}
var t1, t2;
for (var n = 0; n < 20; n++) {
    t1 = performance.now();
    for (var i = 0; i < 1000; i++) {
        var els = temSoClasse('.box', 'a.link');
    }
    t2 = performance.now();
    console.log(t2 - t1);

    t1 = performance.now();
    for (var i = 0; i < 1000; i++) {
        var els = temSoClasse('.box', 'a.link');
    }
    t2 = performance.now();
    console.log(t2 - t1);
    console.log("---");
}