使用backbone和requirejs。我想使用输入掩码。我在视图中添加了另一个jQuery构造,它工作得很好,但是掩码并没有显示在手机字段中。我究竟做错了什么?感谢。
render: function(){
var compiledTemplate = _.template( RegisterTemplate, this.model );
this.$el.html(compiledTemplate);
$("#custphone").mask("(999) 999-9999"); //masks not showing up
$("#custphone2").mask("(999) 999-9999");
$("#custzip").mask("99999");
$("#venuezip").mask("99999");
$().acknowledgeinput({ //works fine!
success_color: '#00FF00',
danger_color: '#FF0000',
update_on: 'keyup'
});
答案 0 :(得分:0)
在页面上放置视图的常用模式如下所示:
var v = new SomeView();
$(something).append(v.render().el);
v.render()
调用会向视图的el
添加一些HTML,但在el
完成之后append
将不会出现在页面上render
1}}已完成。所以如果你有render
这样的话:
this.$el.html('<span id="pancakes">Pancakes</span>');
var $pancakes = $('#pancakes');
然后$pancakes
将为空,#pancakes
位于this.$el
内,但它尚未在该页面上,$('#pancakes')
将在页面上显示。
回到你的代码,我猜你#custphone
和朋友来自你的模板。这意味着当您$el
时,它们将位于视图$('#custphone').mask(...)
中,而不是页面本身;结果是你在一堆空的jQuery对象上调用mask
。
您可以使用find
在正确的位置查找这些元素:
this.$el.find('#custphone').mask('(999) 999-9999');
//...
或者您可以使用Backbone为您设置的this.$
功能:
$(jQuery)
view.$(selector)
如果页面中包含jQuery,则每个视图都有一个 $ 函数,该函数运行在视图元素中作用域的查询。 [...]它等同于运行:
view.$el.find(selector)
。
所以this.$(x)
或多或少是this.$el.find(x)
的缩写形式,你会说:
this.$('#custphone').mask('(999) 999-9999');
//...