1

在我的应用程序中,许多 DOM 元素使用jquery-ujs。这在大多数情况下都很好。

有时,我有一个表单元素在获得焦点时被替换。我希望能够为用户持续关注。

我尝试了以下方法,但问题是 jquery 似乎将新节点视为完全一样,而不是它正在替换的节点的精确副本:

$(document).on('ajax:beforeSend',function(){
    window.focussed = $("*:focus");
});
$(document).on('ajax:complete',function(){
    window.focussed.focus();
});

理想情况下,我可以在不添加标记的情况下实现这一点。

4

1 回答 1

0

如果元素被新节点替换,那么关注保存在 window.focussed 中的元素将不会做任何事情。如果他们有相同的 id,你可以这样做:

$(document).on('ajax:beforeSend',function(){
    window.focusedId = $("*:focus").prop("id");
});
$(document).on('ajax:complete',function(){
    $(window.focusedId).focus();
});
于 2013-04-17T17:08:44.473 回答