2011-05-17 54 views
3

我有這樣的:jQuery的窗口綁定重點

$(window).bind("focus", function() { 
    $('input[name=myName]').focus(); 
}); 

但是這是造成「太多遞歸」。所以我把它改爲:

$(window).one("focus", function() { 
    $('input[name=myName]').focus(); 
}); 

但這當然只在窗口第一次獲得焦點時起作用。

問:我該如何編寫它,以便每次用戶切換到另一個屏幕並返回到這一個,然後myName有重點?

回答

4

防止因分配處理程序調用e.stopPropagation()輸入冒泡事件:

$(window).bind("focus", function() { 
    $('input[name="myName"]').focus(); 
}); 
$('input[name="myName"]').focus(function(e) { 
    e.stopPropagation(); 
}); 

或者只是使得window功能檢查e.target上看到事件的來源:

$(window).bind("focus", function(e) { 
    if(e.target === window) { 
     $('input[name="myName"]').focus(); 
    } 
}); 

編輯:圍繞p值添加引號屬性選擇器的藝術。這是強制性的。

+0

謝謝帕特里克。 – 2011-05-18 14:27:04

1

可以這樣的工作?

function winFocus(){ 
    $(window).one("focus", function() { 
     $('input[name="myName"]').focus(); 
    }); 
} 

winFocus(); //first time 

$(window).bind("blur",winFocus);