當#asdf集中,且被點擊其他一些元素,事件觸發以鼠標按下,模糊,鼠標鬆開,請單擊。所以處理程序在點擊之前已經被移除。
mousedown事件在模糊之前觸發。如果你是用鼠標按下,而不是點擊OK,你可以這樣做:
$(document).ready(function() {
$("#asdf").on("focus", function() {
$("body").on("mousedown", wasItClicked);
});
$("#asdf").on("blur", function() {
$("body").off("mousedown", wasItClicked);
});
});
(bin)
編輯:
你可以使用鼠標按下事件,以幫助確定,如果你正在失去,因爲關注的焦點點擊並刪除點擊處理程序中的處理程序(如果失去焦點)。
$(document).ready(function() {
$("#asdf").on("focus",function() {
$("body").on("mousedown", setDown);
$("body").on("click", wasItClicked);
});
$("#asdf").on("blur", function() {
if ($(this).attr("mouse") != "down") {
$("body").off("mousedown", setDown);
$("body").off("click", wasItClicked);
}
});
});
function setDown() {
$("#asdf").attr("mouse","down");
}
function wasItClicked() {
if ($("#asdf") != $(document.activeElement)) {
$("body").off("mousedown", setDown);
$("body").off("click", wasItClicked);
}
$("#asdf").attr("mouse","up");
alert("yeah");
}
new bin
來源
2013-06-21 02:40:52
Joe
但我想註冊單擊事件。 mousedown怎麼能提供幫助? – 1252748
mousedown可以幫助您確定何時刪除點擊處理程序,因此當您因點擊而失去焦點時實際調用wasItClicked。 (見編輯) – Joe