Есть как минимум два способа сделать это ...
Использование замыкания
Просто определите переменную вне обработчика событий и увеличивайте ее с каждым кликом.Тогда просто проверьте, какое значение это имеет.Это может выглядеть так:
// method 1 - using closure
(function(){
var click_counter = 0;
jQuery('#link1').on('click', function(event){
event.preventDefault();
var el = jQuery(this);
click_counter += 1;
if (!el.hasClass('inactive')){
// should be activated
alert('Clicked the link ' + click_counter + ' time(s)');
};
if (click_counter >= 7){
// deactivate
el.addClass('inactive');
};
});
})();
Связывание счетчика кликов с элементом с помощью jQuery.data()
Вы также можете использовать одну из функций jQuery для присоединения данных к элементам.Это может выглядеть так:
// method 2 - using jQuery.data()
jQuery('#link2').on('click', function(event){
event.preventDefault();
var el = jQuery(this);
var click_counter = (el.data('click-counter') || 0) + 1;
console.log(click_counter);
el.data('click-counter', click_counter);
if (!el.hasClass('inactive')){
// should be activated
alert('Clicked the link ' + click_counter + ' time(s)');
};
if (click_counter >= 7){
// deactivate
el.addClass('inactive');
};
});
Живые примеры
Вы видите, что оба кода работают правильно - просто перейдите по этой ссылке на демо: http://jsfiddle.net/3wt8h/
Отказ от ответственности заjQuery <1.7 </h2> Если ваша версия jQuery старше 1.7, у вас не будет доступной функции .on()
.Просто используйте .bind()
вместо этого, он должен работать точно так же.