您可以尝试这样的事情(这有点像 hack)。如果您在 jQuery 中对 css/show/hide/toggle 原型进行猴子修补,您可以测试元素是否:hidden在“滴答”之后更改其属性(我使用了 4 毫秒)。如果是这样,它已经改变了它的可见性。对于动画等,这可能无法按预期工作,但否则应该可以正常工作。
演示:http: //jsfiddle.net/Bh6dA/
$.each(['show','hide','css','toggle'], function(i, fn) {
var o = $.fn[fn];
$.fn[fn] = function() {
this.each(function() {
var $this = $(this),
isHidden = $this.is(':hidden');
setTimeout(function() {
if( isHidden !== $this.is(':hidden') ) {
$this.trigger('showhide', isHidden);
}
},4);
});
return o.apply(this, arguments);
};
})
现在,只需监听showhide事件:
$('div').on('showhide', function(e, visible) {
if ( visible ) {
$(this).find('input:first').focus();
}
});
多田!
PS:我喜欢猴子补丁