Ciao, nello specifico è possibile passare una funzione come argomento del metodo html() ma in tal caso sarebbe opportuno che restituisse una qualche stringa, altrimenti avrebbe poco senso.
La variabile words risulta essere un array ma, utilizzando : (due punti) come separatore, otterrai un array di 4 elementi, una cosa tipo ("antonio"; "dato pasquale"; "dato2 giovanni"; "dato3"). C'è qualcosa che non torna nella logica di funzionamento.
Io risolverei in modo più semplice con regex:
codice:
<!DOCTYPE HTML>
<html>
<head>
<title>Esempio</title>
<meta charset="utf-8">
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<style type="text/css">
.nome{
color: Green;
font-weight: bold;
}
</style>
<script type="text/javascript">
$(function() {
$('.prova').each(function() {
var htmlstr = $(this).html();
$(this).empty().html(htmlstr.replace(/(\w+):/gi,"<span class='nome'>$1</span>:"))
});
});
</script>
</head>
<body>
<div class="prova">
antonio: dato<br>
pasquale: dato2<br>
giovanni: dato3<br>
</div>
</body>
</html>