jquery - backbone.js:渲染后将焦点设置为输入

标签 jquery focus backbone.js setfocus

我有一个有 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/

相关文章:

javascript - 调整隐藏模态弹出窗口的大小

javascript - 如何在 ASP .NET MVC 中使用 javascript 或 jquery 移动 html 元素中的类属性?

javascript - 如何在 Marrionette 复合 View 中动态选择模型的项目 View

python - 如何阻止 gtk.Entry 失去对箭头按键的关注?

javascript - 根据屏幕尺寸显示 Backbone.js 集合的子集

backbone.js - underscore.js 过滤函数

javascript - setTimeout 不适用于我的 onclick 事件

javascript - JQuery - 从一个点循环遍历类的每个案例

html - 当标签旁边的输入获得焦点时,如何更改标签的颜色?

java - JCombobox focusLost 没有触发 - 为什么会这样?