在聊天中你提到你试图模仿 Apple.com 的搜索栏。
在他们的 JS 达到顶峰后,我想出了这个小提琴:http: //jsfiddle.net/NfRN5/7/
诀窍是仅blur
在鼠标按下或某些keypress
es 后的 10 毫秒内输入。
var $search = $('.search-field'), searchBlurable = false
$search
// Always focus when focused
.focus(function(e){
$search.addClass('focused')
searchBlurable = false
})
// Only blur after mouse or key events
.blur(function(e){
if(searchBlurable){
$search.removeClass('focused')
}
})
// Set Blurable for tab/esc
.keydown(function(e){
if(e.keyCode === 27 || e.keyCode === 9) { // esc || tab
searchBlurable = true
$search.blur()
}
})
// Set Blurable for 10ms after a mousdown
$('html').mousedown(function(e){
searchBlurable = true
window.setTimeout(function () {
searchBlurable = false
}, 10)
})