Визначає псевдо-подію :once для класів, що реалізували клас Events, а також метод definePseudos для додавання власних.
Як і Element.Event.Pseudos для Elements, ви можете використовувати псевдо для Class Events.
Псевдо-подія виглядає так само, як CSS-псевдо: event:pseudo(value).
event — це назва події, яку ви використовували раніше, а pseudo — це назва псевдо.
Подія спрацює лише один раз.
var database = new Class({ Implements: Events, connect: function(){ this.fireEvent('connect'); } }); var db = new database(); db.addEvent('connect:once', function(){ alert('i am connected'); }); db.connect(); // will alert 'i am connected' db.connect(); // nothing will happen
Забезпечує, щоб подія не спрацьовувала частіше одного разу за певний проміжок часу. Це особливо корисно для подій, які можуть спрацьовувати часто, але не дійсно необхідно виконувати важку функцію, наприклад, надсилання запитів.
За замовчуванням проміжок часу становить 250 мілісекунд.
myClass.addEvent('scroll:throttle', function(){ // Will only fire once every 250 ms }); myClass.fireEvent('scroll'); // is fired myClass.fireEvent('scroll'); // throttled myClass.fireEvent.delay(300, myClass, 'scroll'); // after 250 ms, so it's fired myClass.addEvent('resize:throttle(400)', function(){ // Will only fire once every 400 ms });
Подія спрацьовує лише тоді, коли оригінальна подія не спрацьовує знову протягом заданого часу. Отже, коли спрацьовує перша подія, а друга — через 100 мс, перша подія скасовується, і спрацьовує лише друга.
За замовчуванням час паузи становить 250 мілісекунд.
myClass.addEvent('keydown:pause', function(){ // Default time is 250 ms }); myClass.fireEvent('keydown'); // The first event is cancelled myClass.fireEvent('keydown'); // this one will fired myClass.fireEvent.delay(1000, myClass, 'keydown'); // This one is after 250 ms, so the previous is not cancelled myClass.addEvent('keydown:pause(100)', function(){ // The pause time is now 100 ms. });
Ця функція визначає новий псевдо.
Events.definePseudo(name, fn);
once стане click:once
fn(split, fn, args)
event:pseudo(value)
:
( та )
: та (
event:pseudo(value)
addEvent. Тобто, це 'fn' у myClass.addEvent('event:pseudo', fn)
Ось як реалізовано псевдо :once
Events.definePseudo('once', function(split, fn, args){ fn.apply(this, args) this.removeEvent(split.original, fn); });
| © Linux.ria.com, 2008-2026 |