Tach!
Debugging im Browser nutze ich so wie so. Also Clickevent wird ausgelöst wenn ich im Code selber die Ausgabe reinschreibe und wird nicht wenn die Ausgabe durch den Script erfolgt.
Schaun wir mal. Wenn im HTML das Element bereits enthalten ist, kommt dein DOM-Ready-Event-Handler und darin findet sich diese Zeile
$('#contacthelp p').click(...
jQuery sucht sich damit alle passenden Elemente und weist ihnen den Click-Handler zu.
Also theoretisch musste es an der Ausgabe liegen, aber ich sehe in der Schleife keinen Fehler. Insbesondere weil das Suchergebnis präsentiert wird.
Dein Ajax-Aufruf kommt also zurück und fügt neue Elemente ins DOM ein. DOM-Ready ist schon lange vorbei und wird auch nicht erneut ausgelöst.
Also der Clickevent wird nicht nur ausgelöst sondern macht auch das was er soll.
Aber er ist den neuen Elementen nicht zugewiesen worden. Ein $('selector') selektiert nur die aktuell vorhandenen Elemente, jQuery macht das nicht für irgendwelche zukünftigen.
Du kannst das Problem auf zwei Arten lösen. Eventhandler händisch an die neuen Elemente anhängen oder Eventhandler an ein gemeinsames Vorfahrenelement hängen. Das Event blubbert (englisch: bubble) die Vorfahrenkette entlang, wenn das nicht von einem Eventhandler unterbunden wurde. Das eigentlich geklickte Element findest du im event-Objekt in der Eigenschaft target. Siehe auch jQuery-Dokumentation event.target.
dedlfix.