jQuery回发焦点

时间:2010-02-22 19:04:53

标签: jquery

在回发后的我的页面上,我试图将焦点返回到先前关注的元素

$(window).load(function() {
  $('.focus').focus();
});

$(document).ready(function() {
  $('input:not([type=button],[type=submit]), select, textarea').focus(function() {
    $(this).addClass('focus');
  });
  $('input:not([type=button],[type=submit]), select, textarea').blur(function() {
    $(this).removeClass('focus');
  }); 
});

我的代码看起来像这样,它甚至适用于嵌套元素,但对我来说看起来有点尴尬,我只是想知道是否有更好/更优化的方法呢?

1 个答案:

答案 0 :(得分:1)

您可以链接选择器并将focus触发器放在dom ready函数中。您甚至可以尝试将要关注的input元素类型列入白名单,而不是黑名单。

$(document).ready(function(){
    $('.focus').focus();
    $('input[type=text], select, textarea').focus(function() {
        $(this).addClass('focus');
        // To save the focused value to a hidden field
        $('#id-of-Hidden-Field').val($(this).attr('name'));

    }).blur(function() {
        $(this).removeClass('focus');
        // remove the focus hidden field
        $('#id-of-Hidden-Field').val('');
    }); 
});

但是,我不确定如何在回发之前保存哪个元素被聚焦,以便在新页面加载时使用focus类输出它。如果 以某种方式执行此操作,那么此代码就可以了。