მეთოდი one
მეთოდი one საშუალებას აძლევს დაამატოს მოვლენის დამმუშავებელი
ელემენტთან. მას შემდეგ, რაც მოვლენა
ერთხელ იმუშავებს - დამმუშავებელი
ავტომატურად წაიშლება.
სინტაქსი
ასე ვამაგრებთ მოვლენის დამმუშავებელს ელემენტთან,
როგორც პირველი პარამეტრი სტრიქონის სახით
გადაეცემა ერთი ან რამდენიმე მოვლენა გამოყოფილი
სფეისებით, მეორედ - გადავცემთ მონაცემებს JavaScript-ის ობიექტის სახით,
რომლებიც გადაეცემა დამმუშავებელს თვისებაში
event.data მოვლენის გამოძახებისას. მეორე პარამეტრი
არაასახავია. მესამედ გადავცემთ ფუნქცია-დამმუშავებელს,
რომელშიც გადაეცემა მოვლენის ობიექტი ან გადავცემთ false:
$(სელექტორი).one(მოვლენები, [მონაცემები], ფუნქცია-დამმუშავებელი(მოვლენის ობიექტი));
შესაძლებელია მეორე პარამეტრად გადავცეთ დამატებითი
ფილტრის სელექტორი ელემენტის შიგნით არსებული შთამომავლებისთვის,
მესამედ - დამატებითი მონაცემები, რომლებიც გადაეცემა
დამმუშავებელს თვისებაში event.data მოვლენის
გამოძახებისას. მეორე და მესამე პარამეტრები
არაასახავია. მეოთხედ გადავცემთ
ფუნქცია-დამმუშავებელს, რომელშიც გადაეცემა მოვლენის ობიექტი
და არაასახავი დამატებითი პარამეტრები. თუ ფუნქცია-დამმუშავებლის ნაცვლად
გადავცემთ false, მაშინ ფუნქცია უბრალოდ
დააბრუნებს false:
$(სელექტორი).one(მოვლენები, [სელექტორი], [მონაცემები], ფუნქცია-დამმუშავებელი(მოვლენის ობიექტი));
შესაძლებელია გამოვიყენოთ მეთოდი one სხვანაირად,
მაშინ პირველ პარამეტრად გადაეცემა
JavaScript-ის ობიექტი, სადაც გასაღებები - მოვლენის ტიპი, ხოლო
მნიშვნელობები - ფუნქცია-დამმუშავებელი, რომელიც ჩვენ დავამატეთ
ელემენტთან:
$(სელექტორი).one({'მოვლენის ტიპი': handler}, [სელექტორი], [მონაცემები]);
თუ ჩვენ არ გადავცემთ დამატებით სელექტორს, მაშინ მოვლენა იმუშავებს იმ ელემენტზე, რომელთანაც ჩვენ ვამაგრებთ დამმუშავებელს, წინააღმდეგ შემთხვევაში - იმ შთამომავალ ელემენტზე, რომელიც შეესაბამება ამ სელექტორს (დელეგირებული მოვლენები).
მაგალითი
მოდით, აბზაცზე დაწკაპუნებისას გამოვიტანოთ ის მონაცემები, რომლებიც
ჩვენ გადავცით მეთოდს one. შემდგომი დაწკაპუნებისას
არაფერი მოხდება. გამოვიყენოთ
ფუნქცია-დამმუშავებელი testFunc,
რომელიც ჩვენ შევქმენით:
<p>დაწკაპუნება</p>
function testFunc(event) {
alert(event.data.text);
}
$('p').one('click', {text: 'aaa' }, testFunc);