2012-08-13 127 views
0

在我的应用程序上,用户单击一个按钮,使得通过ajax显示文本字段。Rails:在使用Ajax渲染部分内容后,使用JS操纵该部分

我想在该文本字段出现后专注于该字段。

$("#my-textfield").focus()在我的js.erb文件中不起作用,但在控制台中正常工作。我也试过setTimeout无济于事。

当我做document.getElementById('my-textfield').focus();我得到“不能关注null”。

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

+0

该元素可能尚未加载。你可以尝试console.log($(“#my-textfield”)。length)? – index 2012-08-13 18:43:43

+0

当我这样做时,我得到0。但现在我正在设置一个半秒的“超时”。 – bevanb 2012-08-13 19:00:57

回答

0

您可以使用.on()收听事件DOMNodeInserted。目前还没有得到广泛的支持,我从来没有使用它,但它看起来可能适用于你想要做的事情。

0

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

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

,以确保它第一次加载。

+0

感谢您的建议 - 尝试了它,但它没有奏效。我认为插入的“新”文本字段不在javascript所搜索的同一平面上,需要以某种方式重新加载。 – bevanb 2012-08-13 19:22:30