2016-03-31 2 views
0

Я пишу небольшую библиотеку, которая позаботится о добавлении и удалении событий. Я просто пытаюсь передать параметры метода в jQuery on. Есть ли причина, по которой я не могу это сделать?Вызов jQuery от применения

# within some object 
... 
on: (el, args...) -> 
$(el).on.apply(this, args) 

Путь Я использую this не может быть правильным, но я не верю, что это является проблемой.

который затем можно назвать так:

SomeObj.on('#hi', 'click' 
    -> console.log('clicked element') 
) 

Я получаю ошибку Uncaught TypeError: elem.each is not a function

По какой-то причине это совершенно топала меня.

+2

У вас неправильный 'this'. Вам нужен '$ (el)' – Amit

+0

@Amit Oh wow, который сработал! – Johnston

+0

@ Почему именно? – Johnston

ответ

1

Проблема неправильное использование this, несмотря на ваше предположение.

Проблема в том, что при вызове функции-члена («метод») она обычно работает на каком-то объекте, это «контекст». Вызов функции через apply, call или через bind не имеет контекста, переданного автоматически, поскольку он теряется при доступе к свойствам функции (apply в этом случае). Чтобы преодолеть это, потребовалось установить соответствующий атрибут this. В вашем случае это означает передачу объекта $(el) функции apply().

Смежные вопросы