fix .on without listener