Я прошел то же и нашел, что все бесплатные опции не были очень хороши. Похож Вы будете писать свое собственное. Мне было бы интересно видеть, есть ли у кого-то свободная/дешевая опция, которая работает
Вот что я бы попробовал:
$("a.button").one("click", function() {
$(this).click(function () { return false; });
});
Свяжите все ссылки с помощью класса "button". Запустите анонимную функцию только один раз (отсюда «один»), которая повторно связывает ссылку, чтобы вернуть false.
Если вы хотите, чтобы она больше походила на то, что у вас есть, попробуйте следующее:
$("a.button").click(function() { $(this).attr("disabled", "disabled"); });
$(document).click(function(evt) {
if ($(evt.target).is("a[disabled]"))
return false;
});
$("a.button").bind('click', function() { $(this).attr("disabled", "disabled"); });
$("a[disabled]").live('click', function() { return false; });
Так и есть. Первая строка привязывает ко всем a-элементам с кнопкой класса функцию, которая устанавливает (кстати, недопустимый для a-элементов) атрибут disabled в disabled.
Вторая функция использует повторную привязку события jQuery в реальном времени для привязки функции «отключения» ко всем будущим экземплярам -элементы, у которых отключены атрибуты и атрибуты отключены
Проверьте документацию jQuery Event для получения более подробной информации о двух используемых функциях, если вы хотите
События привязаны только к document.ready, вы должны обработать это с помощью события .live:
$("a.button").live("click", function() { $(this).attr("disabled", "disabled"); });
$("a[disabled]").live("click", function() { return false; });
Вы также можете просто добавить класс к тегу привязки и проверить щелчок мышью:
$('a.button').click(function(){
if($(this).hasClass('clicked')) return false;
else {
$(this).addClass('clicked');
return true;
}
});
С помощью класса вы можете добавить дополнительный стиль к ссылке после первого щелчка.
создайте JS - включите его на каждую страницу (или на главную страницу, если вы есть.)
Я думаю, что-то вроде
$(document).ready(function(){
$('.button').click(function(){
$('.button').click(function(e) {
e.preventDefault();
});
});
});
Да, установите значение для отслеживания этого:
$("a").click(function (){
if( $(this).data("clicked") ){
return false;
}
$(this).data("clicked", true);
return true;
});
$('a.button').bind('click', function(){
alert('clicked once'); // for debugging
// remove all event handlers with unbind()
// add a new function that prevents click from working
$(this).unbind().bind('click', function(){
alert('clicked a 2nd time or more'); // for debugging
return false;
});
});