Javascript Rails:使用Ajax渲染部分后,使用JS处理该部分

Javascript Rails:使用Ajax渲染部分后,使用JS处理该部分,javascript,ruby-on-rails,ajax,Javascript,Ruby On Rails,Ajax,在我的应用程序中,用户单击一个按钮,通过ajax显示文本字段 我想在该文本字段出现后将注意力集中在该文本字段上 $(“#我的文本字段”).focus()在我的js.erb文件中不起作用,但在控制台中可以正常工作。我还用setTimeout进行了尝试,但没有成功 当我执行document.getElementById('my-textfield').focus()时我得到“不能关注空值” 是否需要在通过ajax加载部分后以某种方式“重新加载”DOM?您可以通过.on()侦听事件DOMNodeIns

在我的应用程序中,用户单击一个按钮,通过ajax显示文本字段

我想在该文本字段出现后将注意力集中在该文本字段上

$(“#我的文本字段”).focus()在我的js.erb文件中不起作用,但在控制台中可以正常工作。我还用
setTimeout
进行了尝试,但没有成功

当我执行
document.getElementById('my-textfield').focus()时我得到“不能关注空值”


是否需要在通过ajax加载部分后以某种方式“重新加载”DOM?

您可以通过.on()侦听事件
DOMNodeInserted
。它还没有得到广泛的支持,我也从未使用过它,但它看起来可能适用于您正在尝试的操作。

我还没有真正做到这一点,但您可以尝试一下

$function() {
  $("#my-textfield").load(function() {
    $(this).focus();
  });
});

以确保已首先加载。

可能该元素尚未加载。你能试试console.log($(“#我的文本字段”).length吗?当我这样做时,我得到0。但是现在我正在设置一个半秒的
超时时间。谢谢你的建议-尝试了一下,但没有成功。我认为插入的“新”文本字段与javascript搜索的文本字段不在同一个存在平面上,需要重新加载。