one մեթոդ
one մեթոդը թույլ է տալիս ավելացնել իրադարձությունների մշակող
տարրին: Այն բանից հետո, երբ իրադարձությունը
մեկ անգամ աշխատի - մշակողը կհեռացվի
ինքնաբերաբար:
Շարահյուսություն
Այսպես մենք ամրացնում ենք իրադարձությունների մշակողը տարրին,
որպես առաջին պարամետր տողի տեսքով
փոխանցվում է մեկ կամ մի քանի իրադարձություն՝ բաժանված
բացատներով, երկրորդը - փոխանցում ենք տվյալներ JavaScript օբյեկտի տեսքով,
որոնք փոխանցվում են մշակողին event.data հատկության մեջ
իրադարձության աշխատելու ժամանակ: Երկրորդ պարամետրը
ոչ պարտադիր է: Երրորդը փոխանցում ենք մշակող-ֆունկցիա,
որին փոխանցվում է իրադարձության օբյեկտը կամ փոխանցում ենք false:
$(ընտրիչ).one(իրադարձություններ, [տվյալներ], մշակող-ֆունկցիա(իրադարձության օբյեկտ));
Կարելի է երկրորդ պարամետրով փոխանցել լրացուցիչ
ֆիլտրող ընտրիչ տարրի ներսում գտնվող ժառանգների համար,
երրորդը - լրացուցիչ տվյալներ, որոնք փոխանցվում են
մշակողին event.data հատկության մեջ
իրադարձության աշխատելու ժամանակ: Երկրորդ և երրորդ պարամետրերը
ոչ պարտադիր են: Չորրորդը փոխանցում ենք
մշակող-ֆունկցիա, որին փոխանցվում է իրադարձության օբյեկտը
և ոչ պարտադիր լրացուցիչ պարամետրեր: Եթե մշակող-ֆունկցիայի փոխարեն
փոխանցենք false, ապա ֆունկցիան պարզապես
կվերադարձնի false:
$(ընտրիչ).one(իրադարձություններ, [ընտրիչ], [տվյալներ], մշակող-ֆունկցիա(իրադարձության օբյեկտ));
Կարելի է օգտագործել one մեթոդը այլ կերպ,
այդ դեպքում առաջին պարամետրին փոխանցվում է
JavaScript օբյեկտ, որտեղ բանալիները - իրադարձության տեսակն են, իսկ
արժեքները - մշակող-ֆունկցիան, որը մենք ավելացրել ենք
տարրին:
$(ընտրիչ).one({'իրադարձության տեսակ': handler}, [ընտրիչ], [տվյալներ]);
Եթե մենք չենք փոխանցում լրացուցիչ ընտրիչ, ապա իրադարձությունը աշխատում է այն տարրի վրա, որին մենք ամրացնում ենք մշակողը, հակառակ դեպքում - այն ժառանգ տարրի վրա, որը համապատասխանում է այդ ընտրիչին (անուղղակի իրադարձություններ):
Օրինակ
Եկեք կտտացնելով պարբերության վրա արտածենք այն տվյալները, որոնք
մենք փոխանցել ենք one մեթոդին: Հետագա կտտոցների դեպքում
ոչինչ չի տեղի ունենա: Եկեք օգտագործենք
testFunc մշակող-ֆունկցիան,
որը մենք ստեղծել ենք:
<p>click</p>
function testFunc(event) {
alert(event.data.text);
}
$('p').one('click', {text: 'aaa' }, testFunc);