OnClick no seria un atributo.
Cita: $('.cancelar').click(new Function("i
Y yo creo que con solo declarar un nuevo onclick, estarás superponiendo el anterior, sin necesidad de unbind.
Por otro lado, tu sintaxis es muy javascript, cuando puede ser mas simple:
$(".cancelar").click(function () { };
Lo que vaya entre el parentesis de la funcion anterior, sera una variable que en verdad no necesitas. Declara el condicional dentro de las llaves.