2015-06-18 109 views
0

UPDATE:這隻有當我們正在調試發生單擊按鈕火災window.onfocus代替button.onclick

我的代碼如下所示:

function onFocus(){ 
    //do something 
} 
window.onfocus = onFocus; 
//do other things 
$('#button1').unbind().bind("click",function(){ 
    alert('button1 clicked'); 
}); 

當我點擊該按鈕, onFocus代碼執行,但button1單擊從不執行。爲什麼會發生這種情況,是否有解決方法?

編輯: 全部測試頁:

<html> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> 
<script type="text/javascript"> 
function onFocus(){ 
    console.log("onfocus triggered"); 
} 
window.onfocus = onFocus; 
//do other things 
$('#button1').unbind().bind("click",function(){ 
    console.log("button1 clicked"); 
}); 
</script> 
<input type="button" id="button1">Test</input> 
</html> 
+1

當您單擊按鈕時,焦點事件可能會首先觸發按鈕。 –

+0

@ShaunakD這裏的window.focus處理程序正在觸發,沒有爲button.focus定義處理程序 –

+0

按鈕是窗口的一部分。因此,在每一個焦點事件按鈕,輸入,錨這將火 –

回答

2

可能的原因是,你可能已經把警報的onFocus函數內。焦點事件將首先觸發,並顯示警報。然後,您需要點擊ok才能關閉該警報。然後按鈕點擊事件不會觸發。

Fiddle with alert

如果你把這個函數,它犯規不需要任何用戶輸入內的console.log,然後按鈕單擊事件將觸發。

Fiddle with console.log

在你的評論已粘貼不會click事件綁定正確的代碼。您需要將其包裝在document.ready中。

function onFocus() { 
    console.log("onfocus triggered"); 
} 
window.onfocus = onFocus; 
//do other things 
$(document).ready(function() { 
    $('#button1').click(function() { 
     console.log("button1 clicked"); 
    }); 
}); 
+0

小提琴工作正常,但下頁僅產生「聚焦狀態觸發」日誌消息: ' 測試 ' –

+0

嘗試上面的代碼..它會正常工作。 –

0

簡單地做這樣的:

$('#button1').click(function(){ 
    alert('button1 clicked'); 
}) 
0

也許它不喜歡,你有沒有<body>標籤的事實呢?