單擊事件實際上並沒有處理按鍵在任何情況下,它是按鈕使點擊事件起作用。當您使用具有tabindex屬性的div來使其鍵盤可訪問時,當您按Enter鍵時,點擊處理程序不會觸發。
HTML
<div id="click-only" tabindex="0">Submit click only</div>
<div id="click-and-press" tabindex="0">Submit click and press</div>
jQuery的
$("#click-only").click(function (e) {
addToBody(); // Only works on click
});
$("#click-and-press").bind("click keypress", handleClickAndPress(function (e) {
addToBody(); // Works on click and keypress
}));
function addToBody() {
$("body").append($("<p/>").text("Submitted"));
}
function handleClickAndPress(myfunc) {
return function (e) {
if (e.type != "keypress" || e.keyCode == 13) {
myfunc(e);
}
};
}
因此,要回答這個問題,我不認爲還有比yoda2k的解決方案其他更好的方式(即在任何情況下工作)。
我沒有意識到這一點,也沒有想到嘗試......非常感謝! – 2011-03-24 08:43:00
這實際上只適用於具有本機鍵盤支持的元素,如A標籤和Button標籤以及whatnot - 例如,這不適用於div標籤。 – 2012-07-24 21:40:24