Как сделать переход по ссылке только после второго клика?

Нужно запретить переход по ссылке при первом клике и разрешить только после второго. Написал код:
$(".categoriesPage .categoryBox .textBox").attr("data-count", "0");
$(".categoriesPage .categoryBox .textBox").on("click", function(){
    $(this).each(function() {
        var clickCount = $(this).attr("data-count");
        clickCount ++;
        if (clickCount == 1) {
            $(this).attr("dataCount", clickCount);
            return false;
        } else {
            return true;
        }
    });
});

Не работает, в чём может быть ошибка?
  • Вопрос задан
  • 5578 просмотров
Решения вопроса 1
@IoannGrozny
Front-end разработчик
А теперь — самый короткий вариант. Просто запрещаем переход при первом клике =)
$(".categoriesPage .categoryBox .textBox").one("click", false);
Ответ написан
Пригласить эксперта
Ответы на вопрос 5
astralo
@astralo
для "спасибо" есть кнопка [Нравится]
$(function () {
		var boxes = $(".categoriesPage .categoryBox .textBox");
		boxes.data("count", 0);
		boxes.on("click", function (event) {
			if (!+$(this).data("count")) {
				$(this).data("count", 1);
				event.preventDefault();
				return false;
			}
		});
	});
Ответ написан
Комментировать
sergiks
@sergiks Куратор тега JavaScript
♬♬
Cохраняйте кликнутую ссылку. Если кликают впервые, её ещё нет среди сохранённых:
var used=[];
function checkIt(e){
    if( !~used.indexOf( this)) used.push( this), e.preventDefault();
}
$('.notsofast').on('click',checkIt);

Fiddle

ТС уточнил, что при клике по другим ссылкам, нужно «обнулять» посчитанные ранее. Тогда проще – надо запоминать только один элемент, кликнутый ранее:

var used;
$(".categoriesPage .categoryBox .textBox").on("click", function(){
    if( used !== this) used = this, e.preventDefault();
}
Ответ написан
abyrkov
@abyrkov
JavaScripter
@holfza
Что у вас делает цикл? Почему атрибуты в 2х местах по разному называются?
https://jsfiddle.net/nh6bh4v5/
Ответ написан
Комментировать
@Nc_Soft
$(function(){
    $(document).on('click', 'a', function(e) {
        var count = $(this).data('count');
        if(!count) {
            $(this).data('count', 1);
            e.preventDefault();
        }
    });
});
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы