Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   События в плагине (https://javascript.ru/forum/jquery/48148-sobytiya-v-plagine.html)

xmlns 21.06.2014 17:22

События в плагине
 
Добрый день.
Сделал небольшой плагин, структура которого такова:
(function($)
{
    function rating(element, options)
    {
         this.element = $(element);
         var self = this;
         ....
         this.stars.click(function()
         {
             //Тут обрабатываем клик
             self.element.append(trololo);
             ....
         }
     }
     jQuery.fn.rating = function(options) { return this.each(function() { rating(this,options); }); };
})(jQuery);

Плагин замечательно навешивается на элементы, но при этом плохо работают события (в примере это click). Т.е. тыкаю я на какой-то элемент, и вместо того, чтобы событие произошло у тыкнутого элемента, оно происходит у самого последнего на странице. Я так понимаю, тут дело с безымянными функциями.
Как лечится?

рони 21.06.2014 18:05

xmlns,
вы с this непереборщили?

Sweet 21.06.2014 18:26

xmlns, у тебя this в rating на глобальный объект ссылается. js - не знай, плагины - пиши.:D

xmlns 21.06.2014 18:47

Делал по примеру того, что нашел в других плагинах.
И как тогда исправить надо?

xmlns 21.06.2014 19:03

jQuery.fn.rating = function(options) { return this.each(function() { new rating(this,options); }); };

рони 21.06.2014 19:27

xmlns,
jQuery.fn.rating = function(options) { return this.each(function(indx, element) { rating(element,options); }); };

xmlns 21.06.2014 20:21

А мой вариант плох?


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