Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как можно упростить доступ к функциям внутри плагина (https://javascript.ru/forum/events/44347-kak-mozhno-uprostit-dostup-k-funkciyam-vnutri-plagina.html)

Sanu0074 16.01.2014 15:23

Как можно упростить доступ к функциям внутри плагина
 
Допустим есть плагин:
(function($){			//управение каталогом товаров
	
	var abc = $("#id");
	
    $.Products = {
        init : function() {
		 
		  $(document).on("change", "#select", function(){
			$.Products.setPage();
		  });

        },

		setPage : function(){		
			//actions
		},

//more actions .....


Обычно из метода init, можно достучаться до setPage, так: this.setPage(), но из обработчика .on() в handler'e чтобы добраться до setPage() - нужно писать: $.Products.setPage();

Можно ли сделать так чтобы вместо $.Products.setPage(), писать this.setPage(), а то что передается в обработчик было доступно по $(this) ?

И, можно ли как-то достучаться до свойства плагина abc, из созданного обьекта: var obj = $.Products;
так: obj.abc, без использования геттера?

krasovsky 17.01.2014 11:56

Цитата:

Можно ли сделать так чтобы вместо $.Products.setPage(), писать this.setPage(), а то что передается в обработчик было доступно по $(this) ?
Нельзя. this указывает на объект(#select) к которому применено действие (change). $(this) - это тот же this, "обернутый" в jquery-объект.

Цитата:

И, можно ли как-то достучаться до свойства плагина abc, из созданного обьекта: var obj = $.Products;
так: obj.abc, без использования геттера?
Ваш $.Products - всего лишь объект, достучаться до его свойств можно так же как и до свойств любого объекта

ВОт : http://jsfiddle.net/a3x5r/


Часовой пояс GMT +3, время: 20:50.