Metod one
Metod one elementga hodisa qayta ishlovchisini
qo'shish imkonini beradi. Hodisa bir marta ishlagandan
so'ng - qayta ishlovchi avtomatik ravishda o'chiriladi.
Sintaksis
Biz elementga hodisa qayta ishlovchisini shunday bog'laymiz,
birinchi parametr sifatida satr shaklida bitta yoki
bir nechta bo'shliq bilan ajratilgan hodisalar uzatiladi,
ikkinchisi - JavaScript ob'ekti shaklida ma'lumotlarni uzatamiz,
ular hodisa ishlaganda event.data xususiyatida
qayta ishlovchiga uzatiladi. Ikkinchi parametr
ixtiyoriy. Uchinchisi, hodisa ob'ektini uzatadigan
qayta ishlovchi funksiyani uzatamiz yoki false ni uzatamiz:
$(selector).one(hodisalar, [ma'lumotlar], qayta-ishlovchi-funksiya(hodisa ob'ekti));
Ikkinchi parametr sifatida qo'shimcha filtrlovchi
selectorni element ichidagi avlodlar uchun uzatish mumkin,
uchinchisi - hodisa ishlaganda event.data
xususiyatida qayta ishlovchiga uzatiladigan qo'shimcha
ma'lumotlar. Ikkinchi va uchinchi parametrlar
ixtiyoriy. To'rtinchisida, hodisa ob'ekti va
ixtiyoriy qo'shimcha parametrlarni uzatadigan
qayta-ishlovchi funksiyani uzatamiz. Agar
qayta-ishlovchi funksiya o'rniga false uzatilsa, funksiya shunchaki
false qiymatini qaytaradi:
$(selector).one(hodisalar, [selector], [ma'lumotlar], qayta-ishlovchi-funksiya(hodisa ob'ekti));
one metodidan boshqacha foydalanish mumkin,
unda birinchi parametr sifatida
kalitlari - hodisa turi, bo'lgan JavaScript ob'ekti uzatiladi,
qiymatlari - biz elementga qo'shgan qayta ishlovchi funksiya:
$(selector).one({'hodisa turi': handler}, [selector], [ma'lumotlar]);
Agar biz qo'shimcha selector uzatmasak, hodisa biz qayta ishlovchini bog'lagan elementda ishlaydi, aks holda - bu selectorga mos keladigan avlod elementida ishlaydi (delegatsiya qilingan hodisalar).
Misol
Keling, abzatsga bosilganda, biz
one metodiga uzatgan ma'lumotlarni chiqaramiz.
Keyingi bosilishlarda hech narsa bo'lmaydi.
Biz yaratgan testFunc
qayta-ishlovchi funksiyasidan foydalanamiz:
<p>bosish</p>
function testFunc(hodisa) {
alert(hodisa.data.text);
}
$('p').one('click', {text: 'aaa' }, testFunc);