In a mobile browser there is a 300ms delay when clicking something before the actual event fires. The rational behind this is that the browser have to wait and see of you did a double tap. 300ms is a noticable delay and it make your app feel sluggish if you don't do anything about it. A common way to deal with this is to create a custom 'tap' event which is fired as soon as the finger is lifted from the screen (we use hammer.js tap these days).
The thing is that, following a tap event, the click event will still be fired in the same place after 300ms. Even if the UI has changed and there is now something else in that same place. For most part this isn't a problem since you won't be hooking things up to click event anyway. Something do however, have default behavior on click. <input> elements for example, will show the softkeyboard on click.
So you will need a way the default behavior on clicks following a tap which was handled. This article suggests implementing a ghost click buster that prevent any click within 2500ms in proximity of the handled tap.
For some reason this didn't quite work for input elements on iOS. The input box would open the keyboard but didn't have focus. Our workaround is quite obtuse - disable all input elements for at least 300ms when they enter/leave the screen. Is not how we would like to solve this but is the only solution we found that works in all browsers.