jQuery Sparkle обеспечивает чистое элегантное решение для этого, вызвав функцию «один раз», вы можете привязать обработчик к событию только один раз.
Это важное улучшение по сравнению с предложением Дарко Z:
$("#myButton").unbind("click").click(myHandler);
При каждом вызове отменяет привязку любых других обработчиков «щелчка», связанных с событием «щелчка». Таким образом, вы уверены, что убедитесь, что это только один раз, однако вы случайно удалили все остальное! По электронной почте Ой!
Предложение Джарретта отменяет привязку обработчика «click» сразу после его вызова, поэтому, если вы хотите, чтобы обработчик вызывался снова (после его первоначального запуска), вам придется перепривязать обработчик.
Использование jQuery Sparkle один раз позволит обработчику запускать столько раз, сколько ему нужно, но его можно связывать только один раз, а не несколько раз. Вы можете использовать это так:
$('#myButton').once('click', function(){
// my handler
});
Или, если вы хотите поддерживать данные в вашем обратном вызове так же, как встроенный в jQuery «bind», вы можете использовать:
$('#myButton').once('click', data, function(){
// my handler
});
Вы можете найти исходный код для определения функции раз здесь .
Это открытый исходный код под лицензией AGPL, так что вы можете свободно выбирать из него то, что вам нужно, без проблем! :-) Он также активно развивается изо дня в день, поэтому у вас никогда не будет недостатка в поддержке.
Но самое главное, это DRY Plugin / Effect Framework, который позволяет вам гораздо легче разрабатывать плагины и расширения. Надеюсь, это поможет достичь этой цели!