Javascript-форум (https://javascript.ru/forum/)
-   Библиотеки/Тулкиты/Фреймворки (https://javascript.ru/forum/library-toolkit-framework/)
-   -   backbone и проблема с this (https://javascript.ru/forum/library-toolkit-framework/31564-backbone-i-problema-s.html)

ssnikolay 12.09.2012 16:45

backbone и проблема с this
 
Занялся перепиской своего кода на jQuery под backbone, ибо эта "лапша" надоела >< Но возникла проблема- я использую backbone-on-rails (т.е. серверная часть Rails), и имею вот такой кусок кода:
class Sv.Views.StepsStep1 extends Backbone.View
  template: JST['steps/index']

  el: '#box1'

  events:
    'blur :input': 'change' # Change


  change: -> alert($(this).attr('id'))


Но проблема в том, что this в методе change ссылается не на input, с навешенным blur, а на класс Sv.Views.StepsStep1 >_<
Есть какой нибудь способ передать\определить в методе нужный мне $(this)?

_axl 15.09.2012 09:49

this.$el.find("твой инпут")

ssnikolay 17.09.2012 18:34

Таким образом я могу обратиться лишь по id'шнику к примеру.
Т.е.
this.$el.find("#input1");
А у меня их по 6 на странице... т.е. придется
this.$el.find("#input1");
this.$el.find("#input2");
...
this.$el.find("#input6");
вместо к примеру
$(':input').click(function(){ $(this).attr('id') });

_axl 18.09.2012 19:25

Цитата:

А у меня их по 6 на странице... т.е. придется
ну во-первых, он будет искать не на странице, а в том элементе который ты указал:
el: '#box1'


во-вторых можно сделать так:

events:{
    'blur :input': 'change'
}

change : function(event){
var element = $(event.target); // твой инпут
}

ssnikolay 18.09.2012 21:47

_axl, решение - в точку, с меня пиво! Респект! (:


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