Вы определили $this
в глобальной области видимости, поэтому при вызове startCount
для второго элемента значение перезаписывается. Используйте var
, чтобы сделать его локальным:
var $this = this;
DEMO
Вместо того, чтобы снова вызывать функцию элемента, вы также можете сделать что-то вроде этого:
$.fn.startCount = function(count, div) {
count = (count) ? count : parseInt($('span.no-display',this).text());
var $target = $('div.counter', this);
var run = function() {
if (count <= 1) {
this.fadeOut().mouseout();
}
else {
count--;
$target.text(count);
setTimeout(run, 1000);
}
};
run();
}
ДЕМО 2
И чтобы ваш плагин работал в среде, где $
не относится к jQuery
(jQuery.noConflict()
), вам нужно сделать:
(function($) {
$.fn.startCount = ...
}(jQuery));