JavaScript has function scope, not block scope. You can use var ident inside the loop, but that doesn't mean you're actually creating a new variable ident; there will only be one ident inside your function. All functions created/bound inside of your loop share the same reference to that single ident variable.
By the time any of your event handlers run, ident has been repeated reset to a new value, until the final iteration when it will be set to arr[arr.length - 1]['ident']. Every event handling function will have that same value for ident, because they all share a reference to the same ident variable.
To fix this, you need to pass each function its own variable to close over, typically done with an IIFE:
for (i=0;i<arr.length;i++)
{
(function (ident) {
console.log(ident+' ');
$(document).on('click','#'+ident, function() {
console.log('over'+ident+' ');
});
})(arr[i]['ident']);
}