Jquery 将焦点重新应用于替换的DOM元素

Jquery 将焦点重新应用于替换的DOM元素,jquery,ruby-on-rails,ajax,ruby-on-rails-3,ujs,Jquery,Ruby On Rails,Ajax,Ruby On Rails 3,Ujs,在我的应用程序中,许多DOM元素使用。这在很大程度上是好的 偶尔,我会有一个表单元素,它在聚焦时会被替换。我希望能够为用户保持焦点 我已经尝试了下面的问题,但是问题是jQuery似乎将新节点视为确切的,而不是它正在替换的节点的精确副本: $(document).on('ajax:beforeSend',function(){ window.focussed = $("*:focus"); }); $(document).on('ajax:complete',function(){

在我的应用程序中,许多DOM元素使用。这在很大程度上是好的

偶尔,我会有一个表单元素,它在聚焦时会被替换。我希望能够为用户保持焦点

我已经尝试了下面的问题,但是问题是jQuery似乎将新节点视为确切的,而不是它正在替换的节点的精确副本:

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

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

如果元素被新节点替换,则将注意力集中在保存在window.Focused中的元素上不会起任何作用。如果它们具有相同的id,则可以执行以下操作:

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

不知道HTML是什么,因此无法提供完整的解决方案,但要删除的元素是否有名称或其他属性可用于选择它?您可以存储选择器,并使用它使用
$(selector.focus()
重新查找元素。或者也可以使用被替换元素的索引来重新查找它,如前所述,如果与标记的耦合程度不超过现有的耦合程度,我希望将此功能与标记解耦。我只是问是否有另一种方法来存储对聚焦元素的引用,或者通过DOM路径或者其他属性。如果您将HTML添加到问题中,我可能可以提出更具体的建议。我想知道是否有其他方法可以从存储在
$(“*:focus”)
中的信息推断匹配项,而不需要特定的属性。