シフトキーの押下をリッスンする機能があります
$("fieldset").on("change", "input[type='checkbox'].shift_selectable_box", function () {
$(document).on("keydown keyup", listening_for_shift);
var boxes = $(this).closest("fieldset").find("input[type='checkbox']"),
any_selected = boxes.filter(":checked").size() > 0;
if (any_selected) {
$(document).on("keydown keyup", listening_for_shift);
} else {
$(document).off("keydown keyup", listening_for_shift);
}
});
});
function listening_for_shift(e) {
if (e.keyCode == 16) {
if (e.type === "keydown") {
console.log(e);
}
if (e.type === "keyup") {
console.log(e)
}
}
シフトキーが押されているときに、listening_for_shift
関数を呼び出したinput[type=checkbox]
要素、つまり変更された要素で何かを実行できる方法はありますか?
編集:
どうやら、私はこのようなことができます:
if (any_selected) {
$(document).on("keydown keyup", function listening_for_shift(e) {
if (e.keyCode == 16) {
if (e.type === "keydown") {
console.log(self);
}
if (e.type === "keyup") {
console.log("no shift")
}
}
});
} else {
$(document).off("keydown keyup", listening_for_shift);
}
リスナーが追加されます。しかし、私.off()
は機能しません。