`This is because sometimes DOM element is removed before touchend is fired.`

I think this is more truthful than your comment here. If the touchend won't fire we have a serious platform bug.