用于渲染元素的jquery事件

时间:2012-04-24 06:26:16

标签: javascript jquery html

我试图在屏幕上进行所有dom操作,然后让它可见。哪个有效,除了现在我有这样的情况,我试图用一个表格,我想在浏览器上呈现它时专注于第一个输入文本。

类似于:myForm.prependTo(myDiv).show().find('input:first').focus();

问题是在表单完成渲染之前调用了焦点,这导致了可爱的错误 '无法将焦点移动到控件,因为它是不可见的,未启用的,或者不是接受焦点'

其他Web开发人员如何处理屏幕上操作元素然后使其可见的类似情况?我希望jQuery有像myForm.prependTo(myDiv, function() { /* on render code here */ })这样的东西

我知道这样做的一种方法是设置超时,当它触发时我将注意力集中在输入上,但我觉得这并不是最干净的做事方式。我知道iframe有一个onload事件,所以我很好奇人们是否经常在一些隐藏的iframe中绘制它们的元素并监听它的load事件以了解元素何时完成渲染?如果是这样,你能指出我这样做的一个例子吗?

2 个答案:

答案 0 :(得分:1)

myForm.prependTo(myDiv).show(function(e){
    $(this).find('input:first').focus();
});​

答案 1 :(得分:1)

我知道我迟到了7年,但是我遇到了类似的问题,我通过将渲染后需要发生的事情放入准备好的处理程序中来解决了这个问题。

我有一个还原功能可以正常工作,但是有零个或几乎零个视觉反馈表明该元素已还原。

我尝试先清空元素。它仍然有效,但视觉反馈仍然为零。

$("#someSelector").empty(); restore();

然后我发现ready()发生在渲染之后;所以我将其更改为...。

$("#someSelector").empty().ready(function() { restore(); });

现在,直到empty()操作RENDERS之后,restore()才发生。这意味着我的元素似乎要清空然后重新填充(它总是这样做,但是现在用户可以看到它发生了。)

几天前,我以某种方式找到了该解决方案,以解决我不记得的一些模糊搜索的另一个问题。然后,我再次需要它,但记不清我做了什么。现在我的搜索包括单词“ jquery”和“ render”,并把我引到这里。

我最终要遍历我的代码来找出我所做的事情,我认为将其发布在这里可能是个好主意,以防其他人偶然发现这篇文章并且实际上需要在渲染后执行一些操作。

干杯。