Я пишу небольшое расширение jQuery, которое не позволяет пользователю дважды щелкнуть ссылку.
$.fn.preventDoubleClick = function() {
return this.click(function() {
var $t = $(this)
, retVal = $t.data('active') // check the internal flag
;
if (retVal || retVal === undefined) { // if ON...
$t.data('active', false); // set the internal flag to OFF
setTimeout(function() {
$t.data('active', true);
}, 1000); // after 1 second, set the internal flag to ON
console.log("allowed");
return true;
} else { // if OFF...
console.log("blocked");
return false;
}
});
};
проблема в том, что если на элементах есть другие обработчики событий щелчка, они все равно запускаются:
$('#myLink').click(function() {
console.log("Clicked");
});
$('#myLink').preventDoubleClick();
И теперь, когда вы дважды щелкаете ссылку, я получаю это в своем журнале:
1010 * разрешено *
щелкнул
заблокирован
нажал
В общем, мне нужна функция click внутри preventDoubleClick
, чтобы остановить запуск всех других обработчиков событий. Как я могу это сделать?