Как реализовать функцию клика в плагине jQuery?

Друзья, второй день ломаю голову.. Не могу понять, как сделать, чтобы работал обработчик события клик:
<div id='block'></div>

<script>
(function( $ ){
var defaults = {fullstar:'icon-star-1', emptystar:'icon-star-two', halfstar:'icon-star-half', click: function() {  } };
  var methods = {
    init : function( options ) { 
return this.each(function() {
this.config = $.extend({}, defaults, options);

}),
    click : function(content) {
      return this.each(function() {
      alert(999);
      })
};
  $.fn.myFunc = function( method ) {
    // Метод вызывающий логику
    if ( methods[method] ) {
      return methods[ method ].apply( this, Array.prototype.slice.call( arguments, 1 ));
    } else if ( typeof method === 'object' || ! method ) {
      return methods.init.apply( this, arguments );
    } else {
      $.error( 'Метод ' +  method + ' не существует в jQuery.tooltip' );
    }    
  };
 
})( jQuery );

$('div#block').myFunc({'halfstar':'icon-star-half', click: function(){ alert(888); } });
</script>

Что я неправильно делаю, подскажите, пожалуйста? Руки опускаются
  • Вопрос задан
  • 101 просмотр
Пригласить эксперта
Ответы на вопрос 1
@Vovchikvoin
Я не буду ничего говорить про отсутствие пары фигурных скобок и про смысл такого кода. Просто опишу происходящее. Ваш метод myFunc принимает переменную method, и как понятно из вашего кода вы ожидаете что method - это строка, потом же сами передаете объект {'halfstar':'icon-star-half', click: function(){ alert(888); } }, теперь method - это объект и следовательно условие(очень странное кстати) typeof method === 'object' || ! method - будет истинно и выполнится код: return methods.init.apply( this, arguments ) - этот код пишет в ГЛОБАЛЬНЫЙ объект свойство config со значением $.extend({}, defaults, options). Вопрос к вам, какой клик должен сработать?

upd извиняюсь за глобальный конфигурации там же each jqueryвский контекст будет верный
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
23 нояб. 2024, в 01:31
1000 руб./за проект
23 нояб. 2024, в 00:16
2000 руб./за проект
22 нояб. 2024, в 23:55
3000 руб./за проект