Ваша переменная timer
не является правильно областью действия, она должна быть вне обработчика, например:
var timer;
$elems.live('mouseover mouseout', function(event) {
var self = $(this), i = 0;
if (event.type == 'mouseover') {
timer = setInterval(function() {
self.attr('src', tabSrc[i]);
i === 2 ? i = 0 : i++;
}, 1000);
}
else {
clearInterval(timer);
}
});
Или, альтернативно, используйте $.data()
для храненияинтервал на элемент, например:
$elems.live('mouseover', function() {
var self = $(this), i = 0;
$.data(this, 'timer', setInterval(function() {
self.attr('src', tabSrc[i]);
i === 2 ? i = 0 : i++;
}, 1000));
}).live('mouseout', function() {
clearInterval($.data(this, 'timer'));
});