Your code snippet looks all good!
The issue is in your CSS styles. Your <div> probably either inherits a different position value or simply – goes behind another element which element blocks your <div> (does not allow it to be clicked).
By changing the position to relative it works, most probably because this position enables z-index and moves your <div> on top to the other element that’s blocking it.
This should be enough for you to figure it out. But if you want more detailed answer – please share your CSS too.