在我的应用中,使用jquery-ujs的许多DOM元素。这在大多数情况下都很好。
偶尔,我有一个表单元素,在有焦点的同时被替换。我希望能够继续关注用户。
我已经尝试了以下方法,但问题是jquery似乎将新节点视为完全相同而不是它正在替换的节点的精确副本:
$(document).on('ajax:beforeSend',function(){
window.focussed = $("*:focus");
});
$(document).on('ajax:complete',function(){
window.focussed.focus();
});
理想情况下,我可以在不添加标记的情况下实现此目的。
答案 0 :(得分:0)
如果元素被新节点替换,那么关注window.focussed中保存的元素将不起作用。如果他们有相同的ID,你可以这样做:
$(document).on('ajax:beforeSend',function(){
window.focusedId = $("*:focus").prop("id");
});
$(document).on('ajax:complete',function(){
$(window.focusedId).focus();
});