使用jQuery 3. +,如何在空格键和 Enter 键触发的按钮上分离 keyup ?
我有这样的事情:
$("#MAIN").on("keyup", "#scrub-btn.buttonOn:focus", function(e){
var allthesekeys = ( e.which == 107 || e.which == 109 || e.which == 96 || e.which == 97 || e.which == 98 || e.which == 99 || e.which == 100 || e.which == 101 || e.which == 102 || e.which == 103 || e.which == 104 || e.which == 105 );
if ( allthesekeys ){
// Do the scrubbing here...
} else {
$(this).off("keyup");
// Can we use $(this) here? Why are Space bar and Enter keys ignoring this?
}
});
我必须重新考虑我的策略吗?任何指针赞赏。
答案 0 :(得分:0)
我认为您正在寻找e.preventDefault();
答案 1 :(得分:0)
您正在使用事件委派...
因此事件处理程序(函数)附加到#MAIN
以处理#scrub-btn.buttonOn
中发生的事件。
$(this)
表示事件发生的元素... 不委托处理事件的元素。这就是.off()
无效的原因。
使用$("#MAIN")
代替...或$(this).closest("#MAIN")
,因为这是必须从事件侦听器中分离的元素。
我很想建议一种更简洁的方法来写你的病情:
var allthesekeys = [107,109,96,97,98,99,100,101,102,103,104,105];
if ( allthesekeys.indexOf(e.which) > -1 ){...}
维护更容易...
;)