При работе в функции просмотра this. $ Относится к this.el.Посмотрите этот код в backbone.js, где определен класс представления, это $ экземпляр, который вы на самом деле используете:
// jQuery delegate for element lookup, scoped to DOM elements within the
// current view. This should be prefered to global lookups where possible.
$ : function(selector) {
return (selector == null) ? $(this.el) : $(selector, this.el);
},
Так что. $ Не $, как вы знаете, когда вы находитесь вфункция представления.Это эквивалентно определению $ вручную:
var test = $("div", this.el)
Чтобы получить доступ к глобальному $ из представления, просто используйте $.Тем не менее, ограниченная область $ существует по причине;разделение интересов.Ваш код представления должен работать только с элементами внутри него.Доступ к элементам $ за пределами представления заново вводит код спагетти, то есть то, чего магистраль должна избежать
В качестве альтернативы, вы можете просто неправильно понять различные способы инициализации el.Используя свойство tagName в определении представления (а также не передавая el в конструктор представления), вы указываете магистрали создать контейнер div для вашего представления, который в любом случае является тегом по умолчанию, поэтому в этом нет необходимости.
Чтобы вид был нацелен на определенный ранее существующий элемент, используйте селектор как el в определении вида, например;
TestView = Backbone.View.extend({
el: "#test_div",