我有一个有 1 个输入的模型。另外,我有一个收藏。现在,当我将模型添加到集合中时,我想将焦点设置为其输入。 准确地说,我需要将焦点设置在新创建的模型 View 的输入上。
但是,我似乎无法让它工作。这是我的函数,它将模型的 View 添加到 Collection View 中:
addOne: function(InvoiceItem) {
var view = new InvoiceItemView({model: InvoiceItem});
this.$('tr[data-id="'+InvoiceItem.get('after')+'"]').after(view.render().el);
this.$('tr[data-id="'+InvoiceItem.cid+'"]').css('background', 'green');
this.$('tr[data-id="'+InvoiceItem.cid+'"] input').focus();
},
问题是,第三次调用: this.$('tr[data-id="'+InvoiceItem.cid+'"] input').focus();
没有执行任何操作。这很奇怪,因为我似乎只能对根元素 tr
进行 DOM 操作,除此之外别无其他。
在我看来,jQuery 不知道该元素存在,这很奇怪,因为当我执行 alert(this.$('tr[data-id="'+InvoiceItem.cid+'"] input').length)
我得到1,这表明该元素存在。
我在这里做错了什么?
最佳答案
使用 _.defer 解决了我的问题:
var $this = this;
_.defer(function(){
$this.$('tr[data-id="'+InvoiceItem.cid+'"] input').focus();
});
关于jquery - backbone.js:渲染后将焦点设置为输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8790137/