Ho potuto rispondere solo ora.


il problema era e.target
Questo però non dovrebbe influire sull'errore "$ non è una funzione".

La cosa non è chiara.

Ad ogni modo event.srcElement dovrebbe essere supportato da tutti i browser ma è comunque deprecato, quindi non c'è alcuna garanzia che continui ad essere supportato in futuro.

Vedi qui qualche riferimento:
Event.srcElement
L'alternativa dovrebbe essere proprio Event.target

Mi pare strano che la causa del problema fosse quella proprietà ma sopratutto che si risolva usandone una non standard

Suppongo ci siano altra cause ma senza vedere l'intero contesto non è possibile trarre conclusioni precise.

Bisogna capire da dove e come stai chiamando quella funzione. Mi sembra evidente che si tratti di un listener applicato ad un qualche evento; in tal caso si potrebbe pensare di usare this per riferirsi all'oggetto da cui è scaturito l'evento.

Eventualmente se puoi postare un link della pagina pubblica o se riesci a postare la parte in cui definisci l'evento, si può cercare di capire meglio dove poter intervenire.

Anche questa parte non mi convince:
codice:
        var row = td.getAttribute('row'),
            column = td.getAttribute('column');
Non ne sono sicuro ma gli attributi row e column non mi pare siano attributi HTML sandard; a meno che tu non stia usando del markup personalizzato impostato a dovere, ti consiglierei di usare degli attributi data se ti serve associare in qualche modo dei valori ai tag HTML.