嗨,
我有两个功能可以做完全相同的事情:
$("#submitmsg").click(function () {
sendmessage();
});
///second function
$("#usermsg").keypress(function(e) {
if (e.which == 13) {
console.log(e.shiftKey ? 'Shift & Enter' : 'Enter only')
if (!e.shiftKey) {
sendmessage();
}
}
});
我想保存尽可能多的代码,所以我更喜欢像";如果该函数或该函数";。类似这样的东西:
if $("#submitmsg").click || $("#usermsg").keypress(13) && !13.shiftKey {
sendmessage();
}
但是我的语法不正确。它是如何完成的?
谢谢。
您可以删除匿名函数作为click
处理程序,因为它只不过是将调用传递给sendmessage()
。只需将sendmessage
函数引用直接作为传递即可
$("#submitmsg").click(sendmessage);
第二个函数不能与第一个函数组合,因为id
选择器和触发事件都不同。但是,你可以把它缩小到
$("#usermsg").keypress(e => {
if (e.which == 13 && !e.shiftKey)
sendmessage();
});
除非console.log
呼叫对您很重要。
您可能想要尝试的是将多个事件与同一处理程序组合。
我认为这在所示的场景中并不实用,因为在其中一种情况下,您也有不同的选择器和一些条件逻辑。
使用检查event.type
的相同选择器执行此操作的一个非常简单的示例如下:
$('#test').on('focus input', function(e){
console.log(`Event type= ${e.type}`);
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input id="test" placeholder="edit me"/>