如何连接 2 个 jquery 函数,它们与 OR 运算符的作用相同?

How to concatenate 2 jquery functions that do the same with an OR operator?

嗨,

我有 2 个功能完全相同:

 $("#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 this function OR this function”之类的东西。像这样:

 if $("#submitmsg").click || $("#usermsg").keypress(13) && !13.shiftKey {
  sendmessage();
 }

但我无法正确理解语法。它是怎么做到的?

谢谢。

您可能想尝试的是将多个事件与同一个处理程序结合起来。

我认为这在显示的场景中不实用,因为在其中一种情况下您还有不同的选择器和一些条件逻辑。

使用检查 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"/>

您可以删除作为 click 处理程序的匿名函数,因为它只是将调用传递给 sendmessage()。只需将 sendmessage 函数引用直接传递为

$("#submitmsg").click(sendmessage);

您的第二个函数不能与第一个函数结合使用,因为 id 选择器和触发事件都不同。但是,您可以将其精简到

$("#usermsg").keypress(e => {
  if (e.which == 13 && !e.shiftKey)
    sendmessage();
});

除非 console.log 电话对您很重要。