Задать вопрос

Как реализовать функцию клика в плагине 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 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 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вский контекст будет верный
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы