/ / jQuery - използване на методи за персонализирани събития - javascript, jquery

jQuery - използване на методи за персонализирани събития - javascript, jquery

Имам персонализирано събитие jQuery като това

jQuery(this).trigger({
type: "my_own_event",
data1: "foo",
data2: "bar"
});

За да прикача обработващ събитие, трябва да използвам .on() функционира по този начин.

jQuery(element).on( "my_own_event", function(e) {
//Do something
});

Как да го използвам като всяко друго вградено събитие като .click(), .keyup(), Нещо като това

jQuery(element).my_own_event(function(e){
//Do Something
});

Опитах да използвам jQuery.fn да направите това, както следва

jQuery.fn.my_own_event = function(callback) {
jQuery(this).on("my_own_event",callback);
}

и работи на Firefox 27.

Това ли е правилният начин да направите това?

Добре ли е да използвате подчертаване в името на събитието?

Отговори:

1 за отговор № 1

Това е добре. Именуването е наред, просто въпрос на конвенция.

Трябва обаче да ощипнете функцията за пряк път. Най- jQuery() не се изисква, тъй като this вече е jQuery обект. Вие също трябва да върнете оригиналния обект за верижни цели.

Можете също така да искате да обработите празната версия на аргумента на обаждането, както правят вградените преки пътища, за да задействат събитието.

Ето как го прави самият източник на jQuery:

jQuery.fn[ name ] = function( data, fn ) {
return arguments.length > 0 ?
this.on( name, null, data, fn ) :
this.trigger( name );
};

Където name е събитието като click или keyup, Това също се справя по избор data аргумент, който би задал event.data във функцията за обратно извикване.

Тогава вие сте напълно в съответствие със съществуващите конвенции за бързи функции на jQuery събитие.

Така вашият пример може да бъде променен на:

jQuery.fn.my_own_event = function(data, callback) {
return arguments.length > 0 ?
this.on("my_own_event", null, data, callback) :
this.trigger("my_own_event");
};

1 за отговор № 2

Да Персонализираното събитие, което сте създали, е наред и името на събитието също е според стандартната конвенция за именуване на събитието

Статия от официалния сайт на Jquery:

на .trigger() метод може да задейства както стандартни имена на събития на браузъра, така и имена на персонализирани събития, за да извикате прикачени обработващи файлове. Имената на събитията трябва да съдържат само буквено-цифрови знаци, подчертаване и двоеточие.

REF:

https://api.jquery.com/trigger/

Happy Coding :)