questi startDragDrop e spyOnUser sono generiche funzioni che si suppone tu abbia definito altrove
function startDragDrop(){...}
function spyOnUser(){...}
tu invece al click fai eseguire una funzione anonima, quel
function () {this.className="test2"}
ed e' ugualmente corretto
non ha ragione di presentarsi il problema di dover cliccare due volte
quindi prova a postare un esempio piu' articolato per individuare cosa determini il malfunzionamento