Передача пользовательских функций в объекты jquery

0

Прошу немного терпения. js beginner. Thnx. Я играю с шаблоном https://github.com/jquery-boilerplate/jquery-boilerplate/blob/master/src/jquery.boilerplate.js

внутри него я добавил 2 новых функции

   init: function () {

      this.mynewFunction2();
   },

    mynewFunction1: function (){

      console.log('ok');
    },

    mynewFunction2: function (){

       $('.link').click(function(){
             this.mynewFunction1();
       });
    }

вы, вероятно, уже видите проблему, но вопрос в том, как передать свой mynewFunction1 в объект jquery? Я нашел несколько сообщений, в которых говорится, что мне нужно назначить мою новую функцию для вызова внутри объекта jquery, но я немного потерялся там. Поэтому, если у вас есть запасная минута, вы можете отправить пример, основанный на моем коде выше. Спасибо!

Теги:
jquery-plugins

2 ответа

1
Лучший ответ

Новая функция создает новую область, которая, в свою очередь, создает новое this:

mynewFunction2: function (){
   $('.link').click(function(){
         this.style.color = 'red';
         // this inside the event handler is the clicked element
   });
}

Вы можете просто отказаться от анонимной функции и передать ее напрямую:

mynewFunction2: function (){
   $('.link').click(this.mynewFunction1);
}

или если вам нужно передать параметры:

mynewFunction2: function (){
   var that = this; // references the parent object
   $('.link').click(function() {
      that.mynewFunction1(this); // passes the clicked element
   });
}
  • 0
    отлично. Большое спасибо за объяснение.
2
 mynewFunction2: function (){
      var self = this;
       $('.link').click(function(){
             self.mynewFunction1();
       });
    }
  • 0
    настоящий солдат :)! благодарю вас!
  • 2
    +1 потому что вы правы, но не могли бы вы объяснить ОП, почему это работает?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню