Quiero crear un elemento sobre la marcha, así:
var productItemTop = $( "<span>" + "<a class='spamItemsX' href='#' " + "onclick=" + eval(launchGenericProductSearch(topProducts)) + ">" + topProducts + "</a>" + "</span>" ); Pero cada vez que cargo la página, se llama a la función launchGenericProductSearch , pero no quiero que se llame en ese momento, sino cuando se hace clic en el enlace.
De hecho, launchGenericProductSearch se ejecutará inmediatamente, no cuando el usuario haga clic.
Obtendrá un mejor control sobre su código cuando use jQuery al máximo, evite eval y vincule los controladores de clic no a través de HTML, sino a través del código JS (jQuery):
var productItemTop = $("<span>").append( $("<a>").addClass('spamItemsX') .attr("href", '#') .click(() => launchGenericProductSearch(topProducts)) .text(topProducts) );